WWDC2019에서 처음 소개된 프레임워크

시간에 따라 값을 처리하기 위한 선언적(declarative) Swift API를 제공

Combine은 publisher가 시간이 지남에 따라 변경될 수 있는 값을 expose하고, subscribers가 publisher로부터 해당 값을 받도록 선언한다.

Publisher & Subscriber

Publisher

타입이 시간에 따라 일련의 값을 전송할 수 있음을 선언

하나 이상의 Subscriber 인스턴스에게 element를 제공

Publisher는 receive(subscriber:) 메소드를 구현해 subscriber를 accept함

Apple Developer Documentation

Subscriber

Publisher로부터 input을 받을 수 있는 타입을 선언하는 프로토콜

Instance

Publisher는 값을 주는 것, Subscriber는 값을 받는 것

지정된 Subscriber의 입력 및 실패 associated type은 해당 게시자의 출력 및 실패와 일치해야 한다.

subscriber를 publisher에 연결하기 위해서는 publisher의 subscriber(_:) 메소드를 사용하면 된다. 이렇게 하면 subscriber에게 구독 instance가 제공된다. 이것은 publisher에게 element를 요구하고 선택적으로 구독을 취소하는데 사용된다. subscriber가 initial 요청을 한 후, publisher는 새로 published된 요소를 전달하기 위해 가능한 비동기적으로 receive(_:)를 호출한다. 만약 publisher가 publishing을 중지하면 publisher는 Subscribers.Completion 유형의 매개변수를 사용하여 publishing이 정상적으로 완료되는지 또는 에러가 발생하는지를 나타낸다.

Combine은 Publisher type의 연산자로 다음의 subscriber들을 제공한다.