1. Combine이란?
공식문서: https://developer.apple.com/documentation/combine
Customize handling of asynchronous events by combining event-processing operators
이벤트 처리 연산자를 결합하여, 비동기 이벤트 처리를 커스터마이징할 수 있는 프레임워크
즉, Apple에서 만든 RxSwift 와 같은 프레임워크라고 할 수 있고, 더 간결하고 다양한 연산자를 활용해 더 다양한 비동기 처리를 할 수 있도록 도와주는 프레임워크이다.
필자는 기존에 RxSwift를 활용하여 비동기 처리를 하는 데 익숙했기에 RxSwift와 비교하여 그 특징을 정리하고, 사용법을 간단하게 정리해보고자 한다.
2. Combine의 3요소
RxSwift와 거의 동일하게, Combine도 아래 3개가 핵심이다.
- 비동기 처리를 통해 나중에 생기는 데이터 = (Combine) Publisher = (RxSwift) Observable
- 그 데이터를 구독한 다음 이후의 작업 = (Combine) sink = (RxSwift) subscribe
- 비동기 처리를 좀 더 원활하게 할 수 있도록 도와주는 연산자 = Operator
비동기 처리를 통해 나중에 생기는 데이터가 방출되면 (publish) -> Operator에 의해 조작되고 -> 구독자(Subscriber)에게 전달되면
그 구독자가 해당 데이터를 가지고 이후 작업을 진행한다. (sink)
3. RxSwift vs Combine
https://eunjin3786.tistory.com/67
RxSwift와 Combine에 대해 비교해볼 수 있는 좋은 글들이 있어서 가져와보았다.
물론 차이가 있긴 하겠지만 큰 틀로 비교해보자면 다음과 같다.
1️⃣ Observable = Publisher
[RxSwift] Observable<String>
[Combine] AnyPublisher<String, Error>
2️⃣ Subject = Subject
[RxSwift] PublishSubject (초기값 없음), BehaviorSubject (초기값 있음)
[Combine] PassthroughSubject (초기값 업음), CurrentValueSubject (초기값 있음)
그리고 두 플랫폼 모두 value, error, completed를 구독자에게 알려준다.
3️⃣ Disposable = Cancellable
[RxSwift] Disposebag에 disposed를 통해 넣어주면, deinit 시 자동으로 메모리가 해제된다.
[Combine] Set<Cancellable>에 store를 통해 넣어주면, deinit 시 자동으로 메모리가 해제된다.
4️⃣ Operator = Operator
https://github.com/CombineCommunity/rxswift-to-combine-cheatsheet
개념은 똑같다. RxSwift에 익숙한 사람들은 해당 cheat sheet를 통해 combine에서 어떤 연산자와 매칭되는지 확인하며 사용할 수 있다.
5️⃣ UI Binding
[RxSwift] RxCocoa와 함께 사용함으로써 UI BInding을 지원하나, UIKit과 통합
[Combine] SwiftUI와 자연스럽게 연동되지만, UIKit은 별도로 binding하는 코드 수동 추가 필요
'🍎 iOS > 반응형 프로그래밍' 카테고리의 다른 글
[RxSwift, RxCocoa] 주요 Operator 특징 및 차이점 정리 (계속 업데이트 예정) (0) | 2023.03.16 |
---|---|
[RxSwift] Disposable, Dispose, DisposeBag (0) | 2023.03.16 |
[RxSwift] RxSwift + MVVM + Moya 적용 (feat. tableview binding) (0) | 2023.01.19 |
[RxSwift] 곰튀김 RxSwift + MVVM 요약 (0) | 2023.01.16 |