$30 off During Our Annual Pro Sale. View Details »

RxSwift

ren
October 25, 2019

 RxSwift

Overview of RxSwift

ren

October 25, 2019
Tweet

More Decks by ren

Other Decks in Programming

Transcript

  1. RxSwift

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. Observable
    Observable
    は観測対象。
    Observable
    は Observer
    に通知を送ることができる。
    Observer
    Observer
    は観測者。
    Observer
    は Observable
    からの通知に反応することができる。

    View Slide

  6. Event
    Observable
    が通知する内容。
    3種類ある
    onNext
    値を流す
    onComplete
    イベントの終了
    onError
    エラー発⽣時

    View Slide

  7. subscribe
    Observer
    が Observable
    を観測すること。
    subscribe
    メソッドには Observer
    が Observable
    からの通知の受信時に何をするかを
    定義する。

    View Slide

  8. dispose
    subscribe
    を解除する。
    onCompleted
    や onError
    が発⽣すると Observable
    はもう Event
    を発⾏できないの
    で⾃動的に dispose
    される。
    DisposeBag
    DisposeBag
    は DisposeBag
    ⾃⾝が開放されるタイミングで、登録された subscribe

    dispose
    する。

    View Slide

  9. Subject
    Subject
    は Observable
    かつ Observer
    のオブジェクト。
    Event
    は onNext
    , onComplete
    , onError
    が流れる。
    4種類ある
    AsyncSubject
    ReplaySubject
    BehaviorSubject
    PublishSubject

    View Slide

  10. Subject
    AsyncSubject
    onCompleted
    が呼ばれた直後に onNext
    で渡された最後の値だけ流す。
    ReplaySubject
    subscribe
    後に値を流す。
    bufferSize
    に指定した数だけ値を流す。

    View Slide

  11. Subject
    BehaviorSubject
    初期値をもつ Subject

    直前に渡された値を保持しsubscribe()された際にその値を流す。
    onNext
    , onCompleted
    , onError
    は発⽣し次第そのまま流す。
    PublishSubject
    初期値をもたない Subject

    onNext
    , onCompleted
    , onError
    は発⽣し次第そのまま流す。

    View Slide

  12. Relay
    Relay
    は Subject
    のラッパー。
    Event
    は onNext
    のみが流れる。
    2種類ある
    BehaviorRelay
    : BehaviorSubject
    のラッパー。
    PublishRelay
    : PublishSubject
    のラッパー。

    View Slide

  13. Traits
    Observable
    のラッパー
    3種類ある
    Single
    Completable
    Maybe

    View Slide

  14. Traits
    Single
    ⼀度だけ Event
    を送る Observable

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

    流れる Event
    は onCompleted
    , onError
    の2つ。
    onNext
    が含まれないため、値を流すことができない。

    View Slide

  15. Traits
    Maybe
    ⼀度だけ Event
    を送る Observable

    流れる Event
    は onSuccess
    , onCompleted
    , onError
    の3つ。
    Single
    と Completable
    を合わせたようなもの。

    View Slide

  16. RxCocoa
    (UI部品⽤のRx) には別の Traits
    がある。
    Driver
    Signal
    ControlProperty
    ControlEvent

    View Slide

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

    View Slide

  18. RxCocoa Traits
    ControlProperty
    エラーを無視できる。
    メインスレッドで実⾏される。
    replay
    する。
    メモリが解放されると complete
    が流れる
    ControlEvent
    エラーを無視できる。
    購読時に初期値を流さない。
    メモリの割り当てが解放されると complete
    が流れる。
    メインスレッドで実⾏される。

    View Slide

  19. Observable
    にも種類がある
    Hot
    Cold

    View Slide

  20. HotとCold
    Hot
    subscribe
    されてなくても Event
    が流れ、
    1つの Stream
    を複数の Observer
    が subscribe
    できる。
    Cold
    subscribe
    されて初めて Event
    が流れ出し、
    subscribe
    される度に別々の Stream
    が⽣成される。

    View Slide

  21. あと2つ⼤きな概念がある
    Operators
    Scheduler

    View Slide

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

    View Slide