Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RxSwift

285ccf879d4171923559cff30927b854?s=47 ren
October 25, 2019

 RxSwift

Overview of RxSwift

285ccf879d4171923559cff30927b854?s=128

ren

October 25, 2019
Tweet

Transcript

  1. RxSwift

  2. Rx(Reactive X)とは Observer パターン Iterator パターン 関数型プログラミング を実装している拡張ライブラリ

  3. RxSwiftのメリット 値の変化を検知できる ⾮同期の処理を簡潔に書ける 宣⾔的記述 MVVMの実装が楽になる

  4. 何ができる? 何でもできる。

  5. Observable Observable は観測対象。 Observable は Observer に通知を送ることができる。 Observer Observer は観測者。

    Observer は Observable からの通知に反応することができる。
  6. Event Observable が通知する内容。 3種類ある onNext 値を流す onComplete イベントの終了 onError エラー発⽣時

  7. subscribe Observer が Observable を観測すること。 subscribe メソッドには Observer が Observable

    からの通知の受信時に何をするかを 定義する。
  8. dispose subscribe を解除する。 onCompleted や onError が発⽣すると Observable はもう Event

    を発⾏できないの で⾃動的に dispose される。 DisposeBag DisposeBag は DisposeBag ⾃⾝が開放されるタイミングで、登録された subscribe を dispose する。
  9. Subject Subject は Observable かつ Observer のオブジェクト。 Event は onNext

    , onComplete , onError が流れる。 4種類ある AsyncSubject ReplaySubject BehaviorSubject PublishSubject
  10. Subject AsyncSubject onCompleted が呼ばれた直後に onNext で渡された最後の値だけ流す。 ReplaySubject subscribe 後に値を流す。 bufferSize

    に指定した数だけ値を流す。
  11. Subject BehaviorSubject 初期値をもつ Subject 。 直前に渡された値を保持しsubscribe()された際にその値を流す。 onNext , onCompleted ,

    onError は発⽣し次第そのまま流す。 PublishSubject 初期値をもたない Subject 。 onNext , onCompleted , onError は発⽣し次第そのまま流す。
  12. Relay Relay は Subject のラッパー。 Event は onNext のみが流れる。 2種類ある

    BehaviorRelay : BehaviorSubject のラッパー。 PublishRelay : PublishSubject のラッパー。
  13. Traits Observable のラッパー 3種類ある Single Completable Maybe

  14. Traits Single ⼀度だけ Event を送る Observable 。 流れる Event は

    onSuccess , onError の2つ。 onSuccess の実態は onNext と onCompleted の組み合わせ。 onNext が含まれるため、値を流すことができる。 Completable ⼀度だけ Event を送る Observable 。 流れる Event は onCompleted , onError の2つ。 onNext が含まれないため、値を流すことができない。
  15. Traits Maybe ⼀度だけ Event を送る Observable 。 流れる Event は

    onSuccess , onCompleted , onError の3つ。 Single と Completable を合わせたようなもの。
  16. RxCocoa (UI部品⽤のRx) には別の Traits がある。 Driver Signal ControlProperty ControlEvent

  17. RxCocoa Traits Driver エラーを無視できる。 メインスレッドで実⾏される。 replay する。(同じ値を繰り返し流す。) Signal エラーを無視できる。 メインスレッドで実⾏される。

    replay しない。
  18. RxCocoa Traits ControlProperty エラーを無視できる。 メインスレッドで実⾏される。 replay する。 メモリが解放されると complete が流れる

    ControlEvent エラーを無視できる。 購読時に初期値を流さない。 メモリの割り当てが解放されると complete が流れる。 メインスレッドで実⾏される。
  19. Observable にも種類がある Hot Cold

  20. HotとCold Hot subscribe されてなくても Event が流れ、 1つの Stream を複数の Observer

    が subscribe できる。 Cold subscribe されて初めて Event が流れ出し、 subscribe される度に別々の Stream が⽣成される。
  21. あと2つ⼤きな概念がある Operators Scheduler

  22. ありがとうございました。