Combine의
Publisher= Rx의Observable
Combine의Subscriber= Rx의Observer
그러나, Publisher는 프로토콜이고 AnyPublisher는 Publisher을 따르는 struct이다.
Subscriber는 프로토콜이고 AnySubscriber는 Subscriber를 따르는 struct이다.
따라서 Observable은 AnyPublisher와 같고 Observer는 AnySubscriber와 같다고 말하는 것이 정확하다.
Observable과 Publisher의 차이가 있다면, Publisher는 만들 때 데이터 타입 뿐 만 아니라 에러 타입까지 지정해주어야한다는 것이다.
: Publisher에게 데이터를 요청함
Combine의
assign≓ Rx의bind
Combine의sink≓ Rx의subscribe
Combine의 Subject
- Publisher와 Subscriber 모두로 동작한다.
- 구독자들에게 value, error, finished를 준다.
PassthroughSubject(initial value 없음) /CurrentValueSubject(initial value있음)Rx의 Subject
- Observable 과 Observer 모두로 동작한다
- 구독자들에게 value, error, completed 를 준다
PublishSubject(initial value 없음) /BehaviorSubject(initial value있음)
CurrentValueSubject : subscriber가 구독한 시점에 초기값을 준다.BehaviorSubject :subscriber가 구독한 시점에 초기값 또는 최신값(초기값 이후 발행된 값이 있다면)을 준다.: 구독을 처분, 취소하는 역할

Combine의 AnyCancellable
- 명시적으로 처분하지 않더라도,
AnyCancellable을 소유하고 있는 객체가 소멸할 경우, 처분이 된다.AnyCancellable에 의해서만 관리되기 때문에 구독 결과를 저장하지 않을 경우 동작하지 않게 된다.
(RxSwift는 subscribe 결과를 저장하지 않더라도 동작함)RxSwift의 Disposable
subscribe함수 내에서observer에 의해 retain 되고 있다.
→ 구독(subscribe) 이후 명시적으로 처분(dispose) 하지 않는다면,Disposable은 complete, error가 발생하기 전까지 살아있게 된다.