일관된 방식으로 비동기 처리를 할수 있는 API를 combine으로 제공
- Publisher
생산자, 배출자- Subscriber
소비자, 구독자- Operator
변경자,가공자
Publisher -> Operator -> Subscriber
protocol Publisher {
accsociatedtype Output
accsociatedtype Failure: Error
func subscribe<S: Subscriber>(_ subscriber: S)
where S.Input == Output, S.Failure == Failure
}
class Weather {
@Published var temperature: Double
init(temperature: Double) {
self.temperature = temperature
}
}
let weather = Weather(temperature: 20)
let subscription = weather.$temperature.sink{
print ("Temperature now : \($0)")
weather.temperature = 25
protocol Subscriber{
associatedtype Input
associatedtype Failure : Error
func recevie(subscription: Subscription)
func receive(_ input:Input) -> Subscribers.Demand
func receive(completion: Subscribers.Completion<Failure>)
}