티스토리 뷰
Managing Model Data in Your App 문서를 보면
App의 모델 데이터와 뷰 간의 connection을 만들어 주는 세가지 property wrapper type 을 소개해줍니다.
- ObservedObject iOS 13+
- EnvironmentObject iOS 13+
- StateObject iOS 14+
ObservedObject 랑 EnvironmentObject는 작년에 살펴봐서
안살펴본 StateObject 만 정리해보겠습니다.
StateObject 의 정의
A property wrapper type that instantiates an observable object.
StateObject 왜 필요한가?
(Managing Model Data in Your App 문서 > Instantiate a Model Object in a View 부분 내용입니다)
SwiftUI는 언제든지 뷰를 다시 만들 수 있습니다.
그 결과, 뷰 안에서 ObservedObject를 만드는 것은 안전하지 않습니다.
대신에 SwiftUI는 이 목적을 위해 StateObject를 제공해줍니다.
StateObject를 사용하면 뷰안에서 안전하게 ObservedObject 인스턴스를 만들 수 있습니다.
StateObject는 ObservedObject 와 같이 동작합니다.
차이점은 SwiftUI가 뷰를 몇번이나 다시 만드는 지 상관없이 주어진 view instance에 대해 single object instance를 만들고 관리한다는 점입니다.
위의 예제처럼 다른 뷰(BookView)의 observed object 프로퍼티로 state object를 넘길 수 있습니다.
SwiftUI는 각각의 뷰 인스턴스에 대하여 distinct object instance 를 만듭니다.
그래서 아래의 예제에서 각각의 Library View는 unique Book Instance를 가집니다.
또한 top level App instance나 앱의 Scene instances 중 하나에서 state object를 만들 수 있습니다.
예를 들어 Library라는 observable object 를 정의하여 book reader app의 books collection을 보관하는 경우, 앱의 최상위 구조에 single library instance를 만들 수 있습니다.
'🍏 > SwiftUI + Combine' 카테고리의 다른 글
[SwiftUI] accessibilityRepresentation 과 accessibilityChildren (0) | 2021.10.27 |
---|---|
[SwiftUI] iOS13에서 onChange(of:perform:) 을 사용하고 싶을 때 (2) | 2021.09.03 |
[SwiftUI] @ViewBuilder 와 AnyView (1) | 2021.08.19 |
[SwiftUI] ZStack vs overlay modifier (2) | 2021.03.26 |
[SwiftUI] Custom Modifier 만들기 (0) | 2021.03.09 |
- Total
- Today
- Yesterday
- cocoapod
- flutter build mode
- github actions
- Flutter Clipboard
- SerializerMethodField
- flutter dynamic link
- Sketch 누끼
- ribs
- flutter deep link
- Flutter 로딩
- 플러터 싱글톤
- METAL
- Dart Factory
- ipad multitasking
- 장고 URL querystring
- Flutter getter setter
- Django Heroku Scheduler
- Django Firebase Cloud Messaging
- Watch App for iOS App vs Watch App
- 플러터 얼럿
- drf custom error
- Django FCM
- Python Type Hint
- 구글 Geocoding API
- Flutter Text Gradient
- Flutter Spacer
- 장고 Custom Management Command
- flutter 앱 출시
- PencilKit
- DRF APIException
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |