[SwiftUI] WWDC23 Discover Observation in SwiftUILanguage/Swift2023. 9. 17. 00:08
Table of Contents
Observation
- define model
- UI respond to changes to that model
- developing with SwiftUI seamless and intuitive(원활하고 직관적)
What is Observation?
Observation
- new Swift feature
- tracking changes to properties
- New in Swift 5.9
- new macro system
@Observable class FoodTruckModel {
var orders: [Order] = []
var donuts = Donut.all
}
@Observable
- Macro
관찰할 수 있는 형식으로 확장
컴파일러에게 변환하도록 지시 - Tracks access
해당 속성에 대한 액세스를 추적
다음 속성이 해당 관찰에서 변경되는 시기를 관찰 - Property changes cause UI updates
변경될 때만body of views
를 다시 계산
환상적인 성능 향상
SwiftUI property wrappers
primary property wrappers
State
- 뷰가 모델에
own state
를 저장해야 하는 경우에 사용 - 편집 가능한 필드에 값을 바인딩
- 해당
property
는property
가 포함된 뷰의 수명에 따라 관리
Environment
- 전역적으로 액세스 가능한 값으로 전파
Observable
은 생성된 업데이트가 액세스를 기반으로 하기 때문에 환상적으로 작동Observable property
가 변경되면view
가 업데이트
Bindable
- Lightweight
- Connect reference to UI
- Uses
$ syntax
to create bindings
Advanced uses
SwiftUI
- 인스턴스당 필드에 대한 액세스를 추적
arrays
,optionals
,any type that contains observable models
를 사용할 수 있음을 의미
array of observable models
혹은 model types that contain other observable model types
을 가질 수도 있습니다. 사용되는 property
가 변경되면 view
는 업데이트됩니다.
Computed properties
- SwiftUI tracks access
Other Observation properties
으로 구성되어도 작동- Manual control when needed
ObservableObject
Observable macro
- simplify code
- decent performance boost
remove ObservableObject
, @Published
@ObservedObject
는 @Environment
로 변환
바인딩은 새로운 @Bindable
로 변경
'Language > Swift' 카테고리의 다른 글
[Swift] UIButton Configuration (0) | 2023.11.15 |
---|---|
[Swift] AutoLayout 오토레이아웃 변경 (0) | 2023.11.07 |
ARC, Reference Count 그리고 optional unowned (with WWDC21 ARC in Swift) (0) | 2023.08.12 |
[WWDC16] Understanding Swift Performance (3) (0) | 2023.08.02 |
[WWDC16] Understanding Swift Performance (2) (0) | 2023.08.02 |
@jaewpark :: 코스모스, 봄보다는 늦을지언정 가을에 피어나다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!