INEEDACHACHA

Combine - Publisher (컴바인 퍼블리셔) 본문

iOS

Combine - Publisher (컴바인 퍼블리셔)

INEEDACHACHA 2024. 3. 17. 18:32

개념

  • 이벤트 처리 연산자를 조합하여 비동기 이벤트 처리를 사용의 의도대로 처리하는 것

특징

  • 컴바인 프레임워크는 시간이 지남에 따라 값을 처리할 수 있는 선언적 스위프트 API를 제공한다.
  • 이러한 값들은 많은 종류의 비동기 이벤트를 표현할 수 있다.
  • 컴바인은 시간이 지남에 따라 변경될 수 있는 값을 방출하기 위해 Publisher를 선언하고, Subscriber는 게시자로부터 해당 값을 받는다.
  • 퍼블리셔 프로토콜은 시간에 따라 일련의 값을 전달할 수 있는 유형을 선언한다.
  • 퍼블리셔들은 업스트림 퍼블리셔들로부터 받은 값에 대해 행동하고 다시 그 것들을 방출할 연산자를 가지고 있다.
  • Subscriber는 Publisher의 연쇄의 끝에서 요소를 수신할 때 작동한다.
  • Subscriber가 명시적으로 요청할 때만 Publisher들은 값을 발신해준다.
  • Subscriber 코드가 연결된 Publisher로부터 이벤트를 얼마나 빨리 수신하는지 제어할 수 있다.
  • 이벤트 처리 코드를 중앙 집중화(centralizing)하고 중첩된 closure 및 콜백과 같은 까다로운 기술을 제거하여 코드를 읽고 유지보수하기 쉽게 만든다.

프로토콜

  • Publisher
  • Subscriber
  • Subject
  • Scheduler
  • Cancellable

Publiser

  • 타입이 시간에 따라 일련의 값을 전송(Transmit) 할 수 있음을 선언
  • Publisher는 하나 이상의 Subscriber 인스턴스에게 element를 제공한다.
  • Publisher는 receive(subscriber:) 메소드를 구현해 subscriber를 accept한다.
  • 값을 방출한다는 개념으로 이해하면 된다.

Subscriber

  • Publisher로 부터 input을 받을 수 있는 타입을 선언하는 프로토콜
  • Subscriber의 인스턴스는 Publisher의 element stream(그들의 relationship 변경사항을 설명하는 life cycle 이벤트를 받는다)
  • 방출된 값 또는 완료 이벤트를 통해 '무언가'를 한다는 것으로 이해하면 된다.

Flow

  • '시간의 흐름에 따라'라는 것은 상기의 그림으로 이해하면 빠르다.
  • 1초에 4를 방출하고, 5초에 8이라는 값을 방출한다
  • 이렇게 방출된 값들은 하나 또는 그 이상의 Subscriber 에게 전달된다.


  • Publisher<Int, Never>를 살펴보면 <Output,Failure> 타입이다.
  • Output은 Publisher가 방출하는 값의 종류이고, Failure는 Publisher가 방출할 수 있는 에러의 종류이다.
  • Subscriber의 Input & Failure의 associated type은 publisher의 Output & Failure 타입과 일치해야한다.

Publisher의 종류

  • Future: 성공하거나 실패하거나 하나의 값을 방출한 후 완료된다.
  • Just: 각각의 subscriber에게 딱 한 번 값을 방출하고 완료된디.
  • Empty: 어떤 값도 내보내지 않는다.
  • Fail: 특정한 error와 함께 즉시 종료된다.