ObservableObject / EnvironmentObject / StateObject
-
ObservableObject
-
구조 복잡, 클래스 기반, 여기저기 많이 사용하는 모델 만들때 사용
-
관찰되려면 @Published 가 있어야한다
@Published var myAge = 20
var myName = "lin" {
didSet {
if oldValue.count == 0 {
objectWillChange.send()
}
}
}
-
objectWillChange.send() 통해서 값이 바뀌었음을 알려줄 수 있다!
- count == 0일때만 Published가 갱신
- myName은 앞에 @Published가 안붙어있다
-
EnvironmentObject
- 싱글톤이랑 유사
- 데이터를 관리할 때 앱을 화면에 여기저기서 막써야하는 . . . 애들
- 뷰 생성되는 시기에 주입해줘야한다 ContentView() .environmentObject(MyInfo()) 굳이 한번 주입된 부분에서는 주입 안해줘도 되나? A() → B() → C() A().environment 해주면 B().environment 안해줘도 되는듯?
- StateObject
- 상위 뷰에서 다시 그리는 순간 CustomButtom() 이 새로 그려진다
- 위 아래 모두 ObservedObject인 경우
- CustomBottom (하위 뷰) @StateObject로 변경하면
- 갱신시 새로 값을 받아와햐나느 경우 ObservedObject, 갱신시 값 유지하려면 StateObject

**갱신시 새로 값을 받아와야하는 경우 ObservedObject,
갱신시 값 유지하려면 StateObject**