Swift

【RxSwift】SubjectとRelayを整理する

2020-03-06

Observableはイベントを検知するためのクラスですが、SubjectとRelayはイベントの検知のみでなく、イベントの発生もできます。

SubjectとRelayをまとめると、以下のようになります。

流せるイベントバッファ
PublishSubjectonNext, onError, onComplete持たない
BehaviorSubjectonNext, onError, onComplete持つ
PublishRelayonNext持たない
BehaviorRelayonNext持つ

イベントとバッファ

イベント

Subject(PublishSubject と BehaviorSubject)は、「onNext」, 「onError」, 「onComplete」の3種類のイベントを流すことができます。

Relay(PublishRelay と BehaviorRelay)は「onNext」のイベントのみになります。

バッファ

Behavior(BehaviorSubject と BehaviorRelay)は、購読した直前のデータをバッファして、そのデータから通知することができます。

用途

Subjectはエラーによって処理を分けたいとき使用します。(通信処理やDB処理のメッセージなど)

RelayはUIに値をバインドする場合に使用します。(イベントを拾えない状態にならないようonNextのみを保証したい)

-Swift

Copyright© すまてくライフ , 2021 All Rights Reserved.