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© てくてくライフ , 2020 All Rights Reserved.