-
[RxSwift] Subject, RelayiOS 2023. 5. 31. 21:52
RxSwift에서 Subject, Relay에 대한 개념 및 특징을 학습하도록 하자
Subject
Subject = Observable + Observer
개발을 하게 되면 Observable에 값을 추가하여,
구독하고 있는 Subscriber가 알아챌 수 있도록 해야 하잖아요?
이럴때 위처럼 Observable이자 Observer인 Subject를 사용하면 됩니다!Realy
기능은 대부분 유사한데, 차이점이 있다면 Rxcocoa 내에 Relay라는 객체를 사용하는 것 입니다.
방출 시에는 .accept() 형태를 사용합니다.
그리고 Dispose 되기 전까지는 계속 살아있기 때문에 UI작업에 주로 많이 사용한답니다! 오류가 발생해도 종료되지 않는 것이 특징입니다!
Publish, Behavior, Replay.. 등등 매우 많지만 주로 사용하는 Publish 와 Behavior 를 알아보도록 하자
PublishSubject
- default 값이 없다
- 신규 subscriber 가 생기더라도 값을 방출하지 않는다
- .completed, .error 이벤트로 종료된다
- ex. 값이 생겼을때 새로 뷰를 그리거나 업데이트 할때 사용
BehaviorSubject
- default 값을 필수로 설정해주어야 함
- 신규 subscriber 가 생기면 즉시 현재 가지고 있는 값을 방출한다. (그래서 default값을 설정하나봄)
- ex. 최신 값을 계속 보여줘야 하는 경우에 사용
PublishRelay
-위와 동일하게 default 값이 없음
- accept 이벤트가 들어온 경우에만 값 방출
- 현재 가지고 있는 값 접근 불가BehaviorRelay
- 여기도 default 값이 있음
- 현재 가지고 있는 값에 접근해서 사용할 수 있음(읽기 전용이긴 함)
결론
- Relay 는 에러가 발생해도 유지되기 때문에 UI 작업에 많이 사용한다.
- Behavior 는 기본값을 가지며, 현재 값에 접근할 수 있으며, 구독하는 즉시 값이 방출된다.학습하며 정리한 내용이라 잘못된 내용이 포함되어 있을 수 있습니다. 틀리거나 수정이 필요한 부분 댓글로 알려주시면 감사하겠습니다!
'iOS' 카테고리의 다른 글
신입 iOS 개발자 1년간의 회고 (2) 2023.09.30 [RxSwift] Subscribe, Bind, Driver (0) 2023.06.25 [iOS] isUserInteractionEnabled (0) 2023.02.28 [iOS] Clean Architecture (0) 2023.01.22