LoginSignup
2
5

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-28

初めに

今回は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 可能になる.

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5