iOS

[iOS] Combine 기초 (추가 중)

SiO2whocode 2025. 2. 13. 14:40
728x90

Combine

  • 비동기적으로 발생하는 이벤트에 따라 변하는 값을 처리하기 위해 Apple에서 제공하는 Swift API이다.
  • Combine은 변하는 값을 내보내는 Publisher (프로토콜)와 Publisher가 내보낸 값을 받는 Subscriber 을 선언한다.
  • Publisher : Publisher 프로토콜을 채택한 타입은 시간에 따라 변하는 일련의 값들을 전달하는 타입이다. publisher는 operators를 가질 수 있는데, operator는 상위(혹은 이전)스트림의 publisher로 부터 전달받은 값들에 대해 행동(값을 변경 하는 등)을 수행하고, 그 결과를 다시 내보내는 역할을 한다.
  • Subscriber : Subcriber 프로토콜을 채택한 타입은 publisher들의 체인 끝에서 내보내진 각 값에 대해 어떠한 처리를 할 수 있다. (ex. 출력) publisher 타입은 subscriber에 의해 명확히 값을 요청받았을 때만 값을 내보낸다. (publisher에 딸린 체인을 수행하는 것도 subscriber가 요청했을 때) 이 때문에 subscriber가 데이터를 받는 속도를 제어할 수 있음
  • 또한, Foundation 프레임워크의 몇가지 타입은 자체적으로 publisher를 제공하기도 함. (ex. Timer, URLSession, NotificationCenter 등.) + Key-Value Observing을 따르는 프로퍼티라면 자체 publisher를 만들 수 있도록 빌트인 퍼블리셔를 제공함. (KVO 관련 내용은 잘 모르겠음)
    • URLSession의 dataTaskPublisher, Timer의 TimerPublisher 등
  • 사용 예시: TextField의 퍼블리셔의 업데이트를 구록, URLRequest로 받은 텍스트를 구독 → 이를 사용하여 다른 퍼블리셔 사용 & 앱 업데이트
  • 장점: 가독성과 유지보수에 도움이되고, 이벤트 처리 코드들이 중앙으로 집중되며, 콜백과 중첩 클로저의 사용을 줄일 수 있다.

개념은 이해가 가는데 해보지 않아서 많이 와닿지는 않음

 

출처: https://developer.apple.com/documentation/combine

 

Combine | Apple Developer Documentation

Customize handling of asynchronous events by combining event-processing operators.

developer.apple.com

 

 

728x90