Subscriber 는 publisher에게 input을 받을 수 있는 type을 선언하는 "프로토콜" 이다.
protocol Subscriber : CustomCombineIdentifierConvertible
선언부가 publisher와는 조금 다르게 CustomCombineIdentifierConvertible
이라는 프로토콜을 준수한다.
CustomCombineIdentifierConvertible
프로토콜은 publisher streams를 unique하게 구분하는 프로토콜이다.
요러한 identifier를 가지고 있어야한다.
Subscriber
는 Publisher
에게 어떠한 요소의 스트림을 전달받는다.
Subscriber
의 Input 과 Failure는 Publisher
의 Output과 Failure 타입과 반드시 일치해야한다.
Publisher
의 이벤트를 구독하는 방법은
1. subscribe(_:)
2. sink(receiveCompletion:receiveValue:)
3. assign(to:on:)
이렇게 3가지 방법이 있다.
Publisher
의 subscribe(_:)
를 호출함으로써 퍼블리셔는 구독자의 receive(subscription:)
함수를 invoke한다.
구독자가 initial demand를 만들면 publisher는 receive(_:)
함수를 호출해 새 요소를 전달한다.
publisher가 방출을 종료하면 receive(completion:)
이 호출된다.