RxSwift - Relay와 Subject
기본적인 부분 외에 공식문서에서 추가적으로 필요한 부분을 학습 진행
목차
1. Subject란?
2. Relay란?
3. Subject와 Relay의 차이점
1. Subject란?
- RxSwift 4시간 강의에서는 Observable의 경우에는 우리가 준 값만 확인할 수 있지만, 좀 더 나아가 개발을 할때 실시간으로 Observable에 값을 추가하고 Subscriber를 할 수 있는 스트림이 필요함.
이때 Observable이자 Observer인것을 Subject라고 부름.
Observable + Observer = Subject
2. Relay란?
- Relay Class는 RxCocoa4에서 구현되었고, PublishRelay와 BehaviorRelay클래스가 존재.
- RxSwift인Subject와는 다르게Relay는 RxCocoa의 클래스
1. PublishRelay
- PublishRelay는 PublishSubject의 Wrapper 클래스
- PublishSubject의 특성처럼 구독 이후의 발생하는 이벤트들만 알 수 있음.

2. BehaviorRelay
- BehaviorRelay는 BehaviorSubject의 Wrapper 클래스
- .value를 통해서 현재의 값을 가져올 수 있음
- variable이 Deprecate되면서 소개시켜드리지 않았지만 대신에 BehaviorRelay를 사용.

Subject와 Relay의 차이점
- Subject는 .completed, .error의 이벤트가 발생하면 subscribe가 종료
- Relay는 .completed, .error를 발생하지 않고 Dispose되기 전까지 계속 작동하기 때문에 UI Event에서 사용하기 적절
그러니까 쉽게 말해서 UI Event의 경우에는 Infinity라서 disposed되기 전까지 계속 사용 가능하다는 의미
'apple > RxSwift, ReactorKit' 카테고리의 다른 글
| RxSwift + MVVM: 예제 코드 흐름 따라가기 #2 (0) | 2021.07.18 |
|---|---|
| RxSwift + MVVM: 예제 코드 흐름 따라가기 #1 (2) | 2021.07.15 |
| RxSwift 스터디 8주차 Time Based Operators (cold, hot) (0) | 2021.07.12 |
| RxSwift 스터디 7주차 Combining Observables (0) | 2021.07.11 |
| RxSwift 스터디 6주차 Transforming Observables (0) | 2021.07.10 |