iOS/SwiftUI

[SwiftUI] ObservedObject, Published

HarryJeonn 2022. 4. 24. 15:42

@ObserverdObject 와 @Published 차이점을 알아보자

@ObserverdObject, @Published

@State

특정 View에서만 사용하는 프로퍼티

@ObservedObject

복잡한 프로퍼티(여러 프로퍼티나 메소드가 있거나, 여러 View에서 공유할 수 있는 커스텀 타입이 있는 경우)

ObservableObject 프로토콜을 따라야 한다.

데이터가 변경됐음을 알리는 방법 중 @Published 프로퍼티 래퍼를 사용하는 것

SwiftUI에 view reload를 트리거한다.

class UserSettings: ObservableObject {
   //@ObervedObjet를 사용하기위해 @Published를 할당
   @Published var score = 0
}
 
struct ContentView: View {
   //@state를 지우고 @ObervedObject로 바꿔줌
    @ObservedObject var settings = UserSettings()
 
    var body: some View {
        VStack {
            Text("나의 점수는 \\(settings.score)점 입니다.")
            Button(action: {
                self.settings.score += 1
            }) {
                Text("Increase Score")
            }
        }
    }
}

참고 블로그

https://seons-dev.tistory.com/35

 

SwiftUI : @State, @ObservedObject / Struct를 Class로

목차 @State 왜 @State는 오직 Struct에서만 작동을 하는가? 앞전 게시물에서 수없이 나왔던 @State 와 Struct 에 대해서 알아보겠습니다. SwiftUI 에서 가장 기본이 되고 많이 사용하는 것들이니 꼭 알아두

seons-dev.tistory.com