https://developer.apple.com/documentation/combine/subscriber
A protocol that declares a type that can receive input from a publisher.
퍼블리셔로부터 인풋을 받을 수 있는 타입을 선언하는 프로토콜입니다.
protocol Subscriber<Input, Failure> : CustomCombineIdentifierConvertible
Subscriber
인스턴스는 퍼블리셔로부터 요소들의 스트림을 받습니다. 또한, 그들의 관계에 대한 변경점을 설명하는 라이프 사이클 이벤트도 함께 받습니다. 주어진 Subscriber의 인풋과 Failure associated type은 상응하는 퍼블리셔의 아웃풋 및 Failure와 일치해야 합니다.
퍼블리셔의 subscribe(_:)
메소드를 호출해서 Subscriber와 퍼블리셔를 연결할 수 있습니다. 이 호출을 구현한 후 퍼블리셔는 Subscriber의 receive(subscription:)
메소드를 호출합니다. 이렇게 하면 Subscriber에게 퍼블리셔로부터 요소들을 요구하기 위해, Subscription을 선택적으로 취소하기 위해 사용하는 Subscription 인스턴스를 제공합니다. Subscriber가 초기 요구를 만든 후 퍼블리셔는 새롭게 퍼블리시된 요소들을 전달할 수 있도록 비동기로 receive(_:)
를 호출합니다. 퍼블리셔가 퍼블리싱을 중단하면 receive(completion:)
를 호출하며, 퍼블리싱이 정상적으로 완료되었는지 혹은 오류가 나타났는지를 나타내는 Subscribers.Completion
타입의 파라미터를 사용합니다.
컴바인은 퍼블리셔 타입에 대한 연산자로써 아래와 같은 Subscriber를 제공합니다.
sink(receiveCompletion:receiveValue:)
는 컴플리션 신호와 새로운 요소를 받는 각 시점을 받을 때 클로저를 실행합니다.assign(to:on:)
은 새롭게 받은 값을 주어진 인스턴스에 있는 키 경로에 따라 확인된 속성에 씁니다.