🍎 iOS/반응형 프로그래밍

[Combine] Combine vs RxSwift 비교 위주 Combine 개념 정리

dev_zoe 2025. 8. 4. 16:08
반응형

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

https://until.blog/@meowbutlerdev/rxswift-vs-combine---%EB%B0%98%EC%9D%91%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

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]    Disposebagdisposed를 통해 넣어주면, 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하는 코드 수동 추가 필요

 

 

 

반응형