# 02/iOS
[iOS] Combine vs RxSwift 정리: iOS 리액티브 프로그래밍 흐름 한눈에 보기
장딴지연
2025. 5. 15. 15:31
반응형
Swift에서 비동기 데이터 흐름을 다룰 때 사용하는 대표적인 리액티브 프레임워크는 Combine과 RxSwift입니다.
이 글에서는 Combine의 핵심 구성 요소와 데이터 흐름을 먼저 요약하고, RxSwift와의 차이점도 함께 정리해볼게요.
🔁 Combine의 데이터 흐름 구조
@Published var value: Int = 0
$viewModel.value
.map { "\($0)" }
.sink { print("값: \($0)") }
.store(in: &cancellables)
Combine에서는 다음과 같은 흐름으로 데이터가 전달됩니다:
순서 | 역할 | 설명 |
1 | @Published | 속성 값의 변경을 감지 가능한 Publisher로 전환 |
2 | Publisher | 값이 시간에 따라 방출됨 |
3 | Operator | map, filter, combineLatest 등으로 중간 처리 가능 |
4 | Subscriber | sink, assign 등을 통해 값 수신 및 처리 |
5 | store(in:) | AnyCancellable을 통해 메모리 해제 시점 관리 |
✅ Combine은 선언적이고, SwiftUI와의 연동이 매우 자연스럽습니다.
🆚 RxSwift와의 차이점
항목 | Combine | RxSwift |
제작사 | Apple (공식) | 커뮤니티 (ReactiveX 기반) |
지원 OS | iOS 13 이상 | iOS 9 이상 |
주요 타입 | Publisher, Subscriber, @Published | Observable, Observer, Subject 등 |
메모리 관리 | AnyCancellable, store(in:) | DisposeBag, disposed(by:) |
연산자 | 기본 제공 (map, filter, merge) | 훨씬 다양함 (retry, throttle, catchError 등) |
SwiftUI 연동 | ✅ 기본 지원 (e.g. @Published) | ❌ 직접 바인딩 필요 |
외부 의존성 | ❌ Xcode 내장 | ✅ CocoaPods/SPM 설치 필요 |
문서/예제 | 적음 (공식 한정) | 많음 (커뮤니티 활발) |
✨ 요약 한 줄 정리
- Combine: SwiftUI와 자연스럽게 연결되는 Apple 공식 리액티브 프레임워크. 진입장벽 낮고 iOS 13 이상에서 강력함.
- RxSwift: 다양한 연산자와 풍부한 예제, iOS 9 이상에서 사용 가능. 단, 외부 의존성이 필요하고 학습 곡선은 더 가파름.
반응형