Subscriber
데이터를 수신하고 처리하는 방법을 정의한다.
•
protocol Subscriber
◦
목적 : Subscriber 프로토콜은 값을 수신하고, 완료 이벤트를 처리하는 객체를 정의한다. Publisher 가 발행하는 데이터 스트림을 구독하고 처리할 수 있는 기능을 제공한다.
◦
주요 메서드 : receive(subscription:), receive(_: Input) -> Subscribers.Demand, receive(completion)
•
enum Subscribers
◦
목적 : Subscribers 열거형은 다양한 종류의 구독자를 제공하는 네임스페이스 역할을 한다. 예를들어 Subscribers.Sink 는 수신한 각 값에 대해 클로저를 실행하는 구독자 타입이다.
•
struct AnySubscriber
◦
목적 : AnySubscriber 는 타입 소거를 통해 구체적인 Subscriber 타입의 정보를 숨기는 동시에, Subscriber 프로토콜을 준수하는 어떤 객체와도 호환될 수 있도록 한다. 이를 통해 더 유연한 코드 작성이 가능!
•
protocol Subscription
◦
목적 : Subscription 프로토콜은 Publisher 와 Subscriber 사이의 생명 주기와 데이터 흐름을 관리한다. Subscriber 가 데이터 요청과 구독 취소를 할 수 있게 해준다.
◦
주요 메서드 : request(_: ), cancel()
•
enum Subscriptions
◦
목적 Subscriptions 열거형은 다양한 종류의 구독을 생성하는데 사용되는 factory 메서드를 제공한다. 예를들어, 사용자 정의 구독 로직을 구현할 때 사용할 수 있다.
예제)
import Combine
// Publisher 생성
let publisher = Just("Hello Combine!")
// Subscriber 정의 및 구독 생성
let subscriber = Subscribers.Sink<String, Never> { completion in
switch completion {
case .finished:
print("Completed Successfully")
case .failure(let error):
print("Received Error: \(error)")
}
} receiveValue: { value in
print("Received Value: \(value)")
}
// Publisher에 Subscriber 구독시키기
publisher.subscribe(subscriber)
Swift
복사