https://developer.apple.com/documentation/combine/subscriber
"A protocol that declares a type that can receive input from a publisher."
퍼블리셔로부터 입력을 받을 수 있는 타입을 선언하는 프로토콜입니다.
protocol Subscriber: CustomCombineIdentifierConvertible
하나의 구독자 인스턴스는 하나의 퍼블리셔로부터 요소들의 흐름을 받습니다. 이는 둘 사이의 관계가 변화하는 모습을 표현하는 생명주기 이벤트와 함께합니다. 주어진 구독자의 입력, Failure에 연관된 타입은 구독자에 대응하는 퍼블리셔의 출력, Failure와 연관된 타입과 일치해야 합니다.
하나의 구독자를 하나의 퍼블리셔에게 연결시킬 수 있으며, 이는 퍼블리셔의 subscribe(:)
메소드를 호출하는 것을 통해 가능합니다. 이 메소드를 호출한 후 퍼블리셔는 구독자의 receive(subscription:)
메소드를 호출합니다. 이를 통해 하나의 Subscription
인스턴스가 구독자에게 주어지며, 인스턴스는 퍼블리셔로부터 요소들을 요구하기 위해 사용됩니다. 그리고 이 인스턴스를 통해 선택적으로 구독을 취소할 수도 있습니다. 구독자가 초기 요구를 요청하면 퍼블리셔는 비동기로 작동하는 receive(
:)
메소드를 호출해 새로운 요소들을 전달합니다. 만약 퍼블리셔가 퍼블리싱을 멈추면 receive(completion:)
메소드를 호출합니다. 타입 Subscribers.Completion
파라미터를 사용함으로써 이뤄지며, 정상적으로 완료되었는지 에러인지는 신경쓰지 않습니다.
Combine은 퍼블리셔 타입에 대한 오퍼레이터로써 아래와 같은 구독자를 제공합니다.
sink(receiveCompletion:receiveValue:)
메소드는 컴플리션 신호를 받았을 때 임의의 클로저를 수행하고, 이렇게 될 때마다 새로운 값을 받습니다.assign(to:on:)
는 주어진 인스턴스에서 키 패스로 확인된 프로퍼티에 새롭게 받은 값을 입력합니다.