Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RxSwift
Search
ren
October 25, 2019
Programming
1
120
RxSwift
Overview of RxSwift
ren
October 25, 2019
Tweet
Share
More Decks by ren
See All by ren
iBeacon.pdf
renchild8
0
64
Other Decks in Programming
See All in Programming
Micro Frontends for Java Microservices - dev2next 2024
mraible
PRO
0
230
今日で分かる!カスタムコップの作り方
krpk1900
2
140
Kotlin Multiplatform at Stable and Beyond (Kotlin Vienna, October 2024)
zsmb
2
410
急速に利用拡大を続ける飲食店向けサービスで 店内端末同士のローカル通信を追加設定なしで実現した話
whatasoda
0
140
ポケモンで考えるコミュニケーション / Communication Lessons from Pokémon
mackey0225
5
220
空間の中でアイドルとレッスンする技術 - 1st "Vision" / Spatial Lesson technologies with my idol - 1st "Vision"
banjun
PRO
0
240
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
monotaro
PRO
2
650
Vue3の一歩踏み込んだパフォーマンスチューニング2024
hal_spidernight
3
900
Modern Functional Fluent CFML REST by Luis Majano
ortus24
0
160
Unlocking Python's Core Magic
leew
0
140
フロントエンドの現在地とこれから
koba04
10
4.6k
Hi, have you met Kotlin Multiplatform? | DevFest Vienna 2024
prof18
0
220
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.9k
Optimizing for Happiness
mojombo
375
69k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Making Projects Easy
brettharned
115
5.9k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Building Better People: How to give real-time feedback that sticks.
wjessup
362
19k
Speed Design
sergeychernyshev
23
540
Gamification - CAS2011
davidbonilla
80
5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
The Cult of Friendly URLs
andyhume
77
6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
59k
Transcript
RxSwift
Rx(Reactive X)とは Observer パターン Iterator パターン 関数型プログラミング を実装している拡張ライブラリ
RxSwiftのメリット 値の変化を検知できる ⾮同期の処理を簡潔に書ける 宣⾔的記述 MVVMの実装が楽になる
何ができる? 何でもできる。
Observable Observable は観測対象。 Observable は Observer に通知を送ることができる。 Observer Observer は観測者。
Observer は Observable からの通知に反応することができる。
Event Observable が通知する内容。 3種類ある onNext 値を流す onComplete イベントの終了 onError エラー発⽣時
subscribe Observer が Observable を観測すること。 subscribe メソッドには Observer が Observable
からの通知の受信時に何をするかを 定義する。
dispose subscribe を解除する。 onCompleted や onError が発⽣すると Observable はもう Event
を発⾏できないの で⾃動的に dispose される。 DisposeBag DisposeBag は DisposeBag ⾃⾝が開放されるタイミングで、登録された subscribe を dispose する。
Subject Subject は Observable かつ Observer のオブジェクト。 Event は onNext
, onComplete , onError が流れる。 4種類ある AsyncSubject ReplaySubject BehaviorSubject PublishSubject
Subject AsyncSubject onCompleted が呼ばれた直後に onNext で渡された最後の値だけ流す。 ReplaySubject subscribe 後に値を流す。 bufferSize
に指定した数だけ値を流す。
Subject BehaviorSubject 初期値をもつ Subject 。 直前に渡された値を保持しsubscribe()された際にその値を流す。 onNext , onCompleted ,
onError は発⽣し次第そのまま流す。 PublishSubject 初期値をもたない Subject 。 onNext , onCompleted , onError は発⽣し次第そのまま流す。
Relay Relay は Subject のラッパー。 Event は onNext のみが流れる。 2種類ある
BehaviorRelay : BehaviorSubject のラッパー。 PublishRelay : PublishSubject のラッパー。
Traits Observable のラッパー 3種類ある Single Completable Maybe
Traits Single ⼀度だけ Event を送る Observable 。 流れる Event は
onSuccess , onError の2つ。 onSuccess の実態は onNext と onCompleted の組み合わせ。 onNext が含まれるため、値を流すことができる。 Completable ⼀度だけ Event を送る Observable 。 流れる Event は onCompleted , onError の2つ。 onNext が含まれないため、値を流すことができない。
Traits Maybe ⼀度だけ Event を送る Observable 。 流れる Event は
onSuccess , onCompleted , onError の3つ。 Single と Completable を合わせたようなもの。
RxCocoa (UI部品⽤のRx) には別の Traits がある。 Driver Signal ControlProperty ControlEvent
RxCocoa Traits Driver エラーを無視できる。 メインスレッドで実⾏される。 replay する。(同じ値を繰り返し流す。) Signal エラーを無視できる。 メインスレッドで実⾏される。
replay しない。
RxCocoa Traits ControlProperty エラーを無視できる。 メインスレッドで実⾏される。 replay する。 メモリが解放されると complete が流れる
ControlEvent エラーを無視できる。 購読時に初期値を流さない。 メモリの割り当てが解放されると complete が流れる。 メインスレッドで実⾏される。
Observable にも種類がある Hot Cold
HotとCold Hot subscribe されてなくても Event が流れ、 1つの Stream を複数の Observer
が subscribe できる。 Cold subscribe されて初めて Event が流れ出し、 subscribe される度に別々の Stream が⽣成される。
あと2つ⼤きな概念がある Operators Scheduler
ありがとうございました。