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
'iOS' 카테고리의 다른 글
[iOS+@] Dependency Injection (의존성 주입) (0) | 2025.03.24 |
---|---|
[Swift] 순환참조와 strong, weak, unowned (0) | 2025.03.14 |
[SwiftUI] Environment value : dismiss (NavigationStack에서 뷰 닫기) (0) | 2024.12.26 |
[또러블슈팅] CloudKit + CoreData 을 사용하는 App에서 iCloud 동기화가 안되는 문제 (0) | 2024.12.12 |
[또러블슈팅] double-quoted include "헤더파일명" in framework header, expected angle-bracketed instead ERROR (0) | 2024.12.10 |