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