[SwiftUI] ObservableObject / EnvironmentObject / StateObject

yxxjxn·2024년 2월 20일

swift study

목록 보기
7/8

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
https://www.notion.so/icons/star-outline_pink.svg **갱신시 새로 값을 받아와야하는 경우 ObservedObject, 갱신시 값 유지하려면 StateObject**
profile
macos

0개의 댓글