# 02/iOS

[iOS] Combine vs RxSwift 정리: iOS 리액티브 프로그래밍 흐름 한눈에 보기

장딴지연 2025. 5. 15. 15:31
반응형

Swift에서 비동기 데이터 흐름을 다룰 때 사용하는 대표적인 리액티브 프레임워크는 CombineRxSwift입니다.
이 글에서는 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 이상에서 사용 가능. 단, 외부 의존성이 필요하고 학습 곡선은 더 가파름.

 


 

 

 

 

 

 

반응형