UI를 메인스레드에서 구현해야하는 이유
·
🍎 iOS/Swift
UI는 왜 메인스레드에서 구현해야할까? UIKit의 메인 스레드 설계 원칙UIKit은 UI작업을 메인 스레드에서 수행하도록 설계되어있다.이것을 따르지 않으면 UI가 비동기적으로 백그라운드 스레드에서 업데이트 되며, 예상치 못한 충돌이나 렌더링에 실패할 수 있다. 스레드 안정성UIKit의 구성 요소는 대부분 Thread-safe하게 설계되지 않았다.여러 스레드에서 UI를 동시에 수정하려고하면 Race condition이나 불안정성이 발생하여 앱이 불규칙하게 작동할 수 있다.메인 스레드를 사용함으로써 이런 충돌을 예방할 수있다. Race Condition?2개 이상의 스레드나 프로세스가 공유자원에 동시에 접근하고 수정할 때 발생하는 문제예) 은행 거래 시스템에서 여러 사용자가 동시에 같은 계좌에서 돈을 인출..
matchedGeometryEffect(Hero animation)
·
🍎 iOS/SwiftUI
matchedGeometryEffect식별자와 네임스페이스를 제공하여 기하학이 동기화된 뷰 그룹을 정의. 이 modifier를 여러 뷰에 부착하면 SwiftUI가 뷰 간의 연결을 이해하고, 자동으로 Transition을 적용할 수 있게 된다. 1. 기본 구조설정@Namespace var animation SwiftUI에서 Hero 애니메이션을 구현하기 위해 먼저 네임스페이스를 정의한다.2. 뷰에 modifier 붙이기VStack { if shouldAnimate { Rectangle () .matchedGeometryEffect(id: "shape" , in: animation) } else { Rectangle () .matc..
matchedGeometryEffect
·
🍎 iOS/SwiftUI
matchedGeometryEffect식별자와 네임스페이스를 제공하여 기하학이 동기화된 뷰 그룹을 정의. 이 modifier를 여러 뷰에 부착하면 SwiftUI가 뷰 간의 연결을 이해하고, 자동으로 Transition을 적용할 수 있게 된다. 1. 기본 구조설정@Namespace var namespace SwiftUI에서 Hero 애니메이션을 구현하기 위해 먼저 네임스페이스를 정의한다.
JerryiOS