본문 바로가기
🍎 iOS/DevNote

[Combine] Combine 개념 및 등장배경

by @Eddy 2024. 4. 28.
728x90

Combine

  • Apple 공식문서의 소개는 다음과 같다.
    • 이벤트 처리 연산자를 결합해 비동기 이벤트 처리를 커스텀한다

개요

  • 시간 흐름에 따른 값을 처리하기 위한 선언적 Swift API를 제공하는 프레임워크
  • 이 값들은 여러 종류의 비동기 이벤트를 나타낼 수 있다. ( 통합 프레임워크라는 의미! )
  • Publisher를 선언하여 시간에 따라 변경될 수 있는 값을 노출하고, Subscriber가 Publisher로부터 값을 받도록 한다.
    • Publisher 프로토콜은 시간에 따른 일련의 값을 전달할 수 있는 타입을 선언한다.
    • Upstream publisher로부터 받은 값을 처리하고, 처리한 값들을 다시 게시하는 Operator를 갖는다.
    • Publisher Chain의 말단에서 Subscriber는 element들을 수신할 때 element에 대한 작업을 수행한다.
    • Publisher는 Subscriber가 명시적으로 요청할 때만 값을 내보낸다.
      • 이렇게 하면 Subscriber와 연결된 Publisher에서 이벤트를 수신하는 속도를 제어할 수 있기 때문이다.
  • Combine은 Key-Value Observing(KVO)를 준수하는 모든 프로퍼티에 대한 기본 제공 퍼블리셔도 제공한다.
  • Combine은 여러 Publisher의 output을 결합하고, interaction을 조정할 수 있다.
    • 예시
      • 텍스트 필드의 Publisher에서 업데이트를 Subscribe하고, 해당 텍스트를 이용해 URL 요청을 수행할 수 있다.
      • 그런 다음, 다른 Publisher를 이용해 응답을 처리하고 앱을 업데이트할 수 있다.
  • Combine은 적용함으로써, 이벤트 처리 코드를 중앙집중화하고 중첩 클로저같은 번거로운 기술을 제거하여 코드를 더 쉽게 읽고 유지 관리할 수 있다.
    • 이벤트 처리를 중앙집중화한다라는 것은, 비동기 처리를 Publisher라는 동일한 인터페이스를 통해 구현한다는 것을 말한다. 이에 따른 재사용성이 향상된다는 의미!

등장배경

  • 다양한 비동기 API(GCD, Closure Callback, Notification 등)는 각각의 고유한 인터페이스를 가지기 때문에 에러를 추적하거나 수정하기 어렵다는 문제가 있었는데, 이를 통합시킨 프레임워크가 Combine이다! (프레임워크 이름이 Combine인 이유)

참고자료

Combine | Apple Developer Documentation

[Combine] Combine 시작하기

반응형

댓글