소피it블로그
[Combine] Published 정리 본문
https://developer.apple.com/documentation/combine/published
attribute로 마킹된 프라퍼티를 발행하는 타입
1. 선언
@propertyWrapper struct Published<Value>
2. 개요
@Published attribute를 가진 프라퍼티를 발행하면 이 타입의 퍼블리셔가 생성된다. 이 퍼블리셔는 다음과 같이 $ 연산자를 통해 접근할 수 있다.
class Weather {
@Published var temperature: Double
init(temperature: Double) {
self.temperature = temperature
}
}
let weather = Weather(temperature: 20)
cancellable = weather.$temperature
.sink() {
print ("Temperature now: \($0)")
}
weather.temperature = 25
// Prints:
// Temperature now: 20.0
// Temperature now: 25.0
프라퍼티가 변경되면 프라퍼티의 willSet 구문 안에 퍼블리싱이 진행되는데, 이는 해당 프라퍼티에 세팅되기 전에 구독자들이 새 값을 받는다는 것을 의미한다. 위의 예시에서 sink가 클로저를 두 번째로 실행할 때 25라는 매개변수 값을 받는다. 그러나 클로저가 weather.temperature를 평가했다면 20이 리턴될 것이다.
*주의할 점
@Published 어트리뷰트는 클래스에서 제한적으로 사용된다. 클래스 타입이 아닌 구조체 등에서는 사용하지 말고 클래스의 프라퍼티에만 사용하라.
'개발_iOS > iOS 기타' 카테고리의 다른 글
[iOS 개발] 앱 로컬라이징 관련 (1) | 2022.09.08 |
---|---|
[Vision] VNPixelBufferObservation, pixelBuffer 정리 (0) | 2022.08.29 |
[Vision] VNCoreMLModel, VNCoreMLRequest 정리 (0) | 2022.08.29 |
[Dispatch] DispatchQueue, main, async 정리 (0) | 2022.08.24 |
[Combine] ObservableObject 정리 (0) | 2022.08.12 |