Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
RxSwift
Slide 2
Slide 2 text
Rx(Reactive X)とは Observer パターン Iterator パターン 関数型プログラミング を実装している拡張ライブラリ
Slide 3
Slide 3 text
RxSwiftのメリット 値の変化を検知できる ⾮同期の処理を簡潔に書ける 宣⾔的記述 MVVMの実装が楽になる
Slide 4
Slide 4 text
何ができる? 何でもできる。
Slide 5
Slide 5 text
Observable Observable は観測対象。 Observable は Observer に通知を送ることができる。 Observer Observer は観測者。 Observer は Observable からの通知に反応することができる。
Slide 6
Slide 6 text
Event Observable が通知する内容。 3種類ある onNext 値を流す onComplete イベントの終了 onError エラー発⽣時
Slide 7
Slide 7 text
subscribe Observer が Observable を観測すること。 subscribe メソッドには Observer が Observable からの通知の受信時に何をするかを 定義する。
Slide 8
Slide 8 text
dispose subscribe を解除する。 onCompleted や onError が発⽣すると Observable はもう Event を発⾏できないの で⾃動的に dispose される。 DisposeBag DisposeBag は DisposeBag ⾃⾝が開放されるタイミングで、登録された subscribe を dispose する。
Slide 9
Slide 9 text
Subject Subject は Observable かつ Observer のオブジェクト。 Event は onNext , onComplete , onError が流れる。 4種類ある AsyncSubject ReplaySubject BehaviorSubject PublishSubject
Slide 10
Slide 10 text
Subject AsyncSubject onCompleted が呼ばれた直後に onNext で渡された最後の値だけ流す。 ReplaySubject subscribe 後に値を流す。 bufferSize に指定した数だけ値を流す。
Slide 11
Slide 11 text
Subject BehaviorSubject 初期値をもつ Subject 。 直前に渡された値を保持しsubscribe()された際にその値を流す。 onNext , onCompleted , onError は発⽣し次第そのまま流す。 PublishSubject 初期値をもたない Subject 。 onNext , onCompleted , onError は発⽣し次第そのまま流す。
Slide 12
Slide 12 text
Relay Relay は Subject のラッパー。 Event は onNext のみが流れる。 2種類ある BehaviorRelay : BehaviorSubject のラッパー。 PublishRelay : PublishSubject のラッパー。
Slide 13
Slide 13 text
Traits Observable のラッパー 3種類ある Single Completable Maybe
Slide 14
Slide 14 text
Traits Single ⼀度だけ Event を送る Observable 。 流れる Event は onSuccess , onError の2つ。 onSuccess の実態は onNext と onCompleted の組み合わせ。 onNext が含まれるため、値を流すことができる。 Completable ⼀度だけ Event を送る Observable 。 流れる Event は onCompleted , onError の2つ。 onNext が含まれないため、値を流すことができない。
Slide 15
Slide 15 text
Traits Maybe ⼀度だけ Event を送る Observable 。 流れる Event は onSuccess , onCompleted , onError の3つ。 Single と Completable を合わせたようなもの。
Slide 16
Slide 16 text
RxCocoa (UI部品⽤のRx) には別の Traits がある。 Driver Signal ControlProperty ControlEvent
Slide 17
Slide 17 text
RxCocoa Traits Driver エラーを無視できる。 メインスレッドで実⾏される。 replay する。(同じ値を繰り返し流す。) Signal エラーを無視できる。 メインスレッドで実⾏される。 replay しない。
Slide 18
Slide 18 text
RxCocoa Traits ControlProperty エラーを無視できる。 メインスレッドで実⾏される。 replay する。 メモリが解放されると complete が流れる ControlEvent エラーを無視できる。 購読時に初期値を流さない。 メモリの割り当てが解放されると complete が流れる。 メインスレッドで実⾏される。
Slide 19
Slide 19 text
Observable にも種類がある Hot Cold
Slide 20
Slide 20 text
HotとCold Hot subscribe されてなくても Event が流れ、 1つの Stream を複数の Observer が subscribe できる。 Cold subscribe されて初めて Event が流れ出し、 subscribe される度に別々の Stream が⽣成される。
Slide 21
Slide 21 text
あと2つ⼤きな概念がある Operators Scheduler
Slide 22
Slide 22 text
ありがとうございました。