PublishRelay란?
PublishRelay는 RxSwift 라이브러리에서 사용되는 하나의 Subject입니다.
Subject란?
Subject는 Observable과 Observer의 역할을 모두 수행할 수 있는 중개자로, 데이터 스트림을 생성하고 해당 스트림으로부터 데이터를 방출할 수 있습니다.
- 즉, Subject = Observable + Observer라고 생각할 수 있습니다.
Observable
- Observable은 데이터 스트림을 나타냅니다.(Observable = Sequence)
일정 기간 동안 계속해서 이벤트를 생성(emit)할 수 있습니다. 이 데이터 소스는 이벤트를 생성하고 이를 옵저버에게 전달할 수 있습니다.
- Observable은 어떤 구성요소를 가지는 next 이벤트를 계속해서 방출할 수 있습니다.
- Observable은 error 이벤트를 방출하여 완전 종료될 수 있습니다.
- Observable은 complete 이벤트를 방출하여 완전 종료될 수 있습니다.
Observer
- Observer는 Observable에서 방출되는 이벤트를 받아들이고 처리합니다. Observable의 데이터 스트림을 구독하고, Observable이 방출하는 값, 에러, 완료와 같은 이벤트에 반응합니다.
- Observer는 주로 Observable을 구독하는 것을 의미하며, .next, .error, .completed와 같은 이벤트에 대응하여 데이터를 처리합니다.
Signal 이란?
Signal은 Observable과 유사한 데이터 스트림을 나타내는 타입입니다.
특징
Signal은 주로 UI 이벤트 및 상태를 처리하기 위해 설계되었습니다. 따라서 메인 스레드에서의 작동을 보장합니다.
Signal VS Drive
Signal은 구독하는 순간부터 이벤트를 방출하는 반면, Observable은 구독 이후에 데이터를 방출하기 시작합니다.
참고 자료
https://jcsoohwancho.github.io/2019-08-09-RxSwift기초-Driver-&-Signal/
https://sujinnaljin.medium.com/rxswift-subject-99b401e5d2e5
https://babbab2.tistory.com/185
rxswift가 이런 거군요~~~!