RxSwift まとめ


はじめに

RxSwiftについてまとめた内容をアップします。(ま今後も随時編集していきます)

目次

  1. RxSwiftが受け入れられる理由は?
  2. Driver
  3. Trait
  4. Hot-Cold
  5. 参考文献

RxSwiftが受け入れられる理由は?

  • メソッドチェインを使いつなげた関数型プログラミング
  • 時間の概念を取り入れたリアクションをコードにできる( ex: debounceメソッド)
  • MVVMによる処理の分離テストと書きやすさ

DriverとSignal

Driver の効力

subscribe +
  • メインスレッドで通知
  • shareReplayLatestWhileConnected を使った Hot変換
  • エラーを伝達しないことを前提とする

参考: Rxcocoaが提供するDriverって何?

Signal

replayされないDriver
⇨ replayされない = 過去のイベントを保持せず、なおかつ値を保持しないこと。
UIButtonのタップイベントなどに向いている。

Trait

メリット
Observableの生成 + read-only
ex) Single, Completable, Maybe

参考: RxSwift Traitについて

Hot-Cold

  • HotなObservableはsubscribeされなくても動作する。
  • HotはObservableは前のColdを動作させる。
  • HotなObservableは分岐できる。
  • HotなObservableはObserverを複数持てる。
  • HotなObservableのイベントは各Observerで共有される。
  • 各Observerに対して同じイベントが送出される。つまりそこまでのColdは何度も呼ばれない(分岐の性質)。
  • すでに流れたイベント(Next)は送出されない。つまり途中からsubcribeすると途中からしか受け取れない。
  • ColdなObservableはsubscribeするまで動作しない
  • ColdなObservableは分岐できない
  • ColdなObservableはObserverを1つしか持てない。2つ持とうとするとストリームが2つになる。

参考: 今日こそ理解するHot / Cold @社内RxSwift勉強会

Hot変換

  • Hot変換するには
    • ConnectableObservableに変換後、connect()を呼ぶ
    • RefCountに対して1つ以上subscribeを行う。(RefCountはsubscribeすることによって内部でconnect()を呼び出す)

参考: 今日こそ理解するHot変換

参考文献