RxSwift, RxCocoaのワードをざっくりと理解する


初めに

今回はRxSwiftを学習するにあたって出てくるてあろうワードについて簡単にですがまとめてみました。
ざっくりとても理解してもらうことを目的にしています。

RxSwift, RxCocoa 共通

event:

enumで定義されている, Streamに流れるイベント,値、 中には onNext, onError, onCompletedがある

enum Event<Element>  {
    case next(Element)      // next element of a sequence
    case error(Swift.Error) // sequence failed with error
    case completed          // sequence terminated successfully
}

Observable: 実行者, observerにイベントの発行を通知する, event を受け取れる
Observer: Observableからデータストリームを受け取るクラス, event を流せる

Subject:

Observer, Observableの両方として機能する

イベント 初期値
BehabiorSubject onNext, onError, onCompleted 必要
PublishSubject onNext, onError, onCompleted 必要ない
BehavoirRelay onNextのみ 必要
PublishRelay onNextのみ 必要ない

〇〇Subject: onNext以外にもonErroe, onCompletedなど流せる→責務が広いため実務ではあまり使われない
〇〇Relay: onNextのみ流す→責務が小さく扱いやすい→積極的に使いたい

Trants: Observableの簡単なラッパーで、
RxSwift → Single, Completable, Maybeが用意されていて、
RxCocoa → Driver, Signal, ControlEvent/Propertyがある
Single: 値 か error のイベントが一回だけ発生する.
Completable: complate か error のイベントが一回だけ発生する.
Maybe: (complate か 値) または error が一回だけ流れる.
イベントが発生する側は Subject をインスタンス化して、外部へは Observable の形で公開するのが基本.

RxCocoa

bind: subscribeでもかえが効くが、バインディングしていることがより明示的になる→onNextしか流れない
Signal: エラーが発生しない, main スレッドで実行, subscribe してから発生した event を受け取れる.
Driver: エラーが発生しない, main スレッドで実行, 一つ前の event を受け取れる.
ControlEvent: エラーが発生しない, main スレッドで実行, メモリ割り当て開放時に complete が発生, subscribe してから発生した event を受け取れる.
ControlProperty: エラーが発生しない, main スレッドで実行, メモリ割り当て開放時に complete が発生, 一つ過去の event を受け取れる. 初期値が必要.
Binder: エラーイベントを処理しない, 指定した Scheduler (デフォルトは main) で実行. bind(to:) で bind 可能になる.