マルチスレッドrxswift @ 社内rxswift勉強会
TRANSCRIPT
RxSwift@ RxSwift
https://https://speakerdeck.com/ukitaka/rxswift-kodorideingufalsekan-suo-at-she-nei-rxswiftmian-qiang-hui/bricklife/rxswiftfalseobserveontosubscribeonwoli-jie-suru
•
subscribe
• subscribe subscribe
Operator
source subscribe
• RxSwift GCD
• observeOn subscribeOn
• iOS
•
•
(RxSwift ) GCD
NSOperationQueue
• RxSwift v2.5.0 (2016 7 master)
• 1
Observable
1 Cold Operator
subscribe subscribe on on
1( ) Scheduler
create Operator subscribeon
Sequence Observer
Sequence Observer
subscribe
Sequence Observer
subscribe
on
Question1
Map
Answer …
A.
Sequence Map Observer
subscribe
subscribe
Sequence Map Observer
subscribe
source
subscribe
subscribe
Sequence Map Observer
subscribe
subscribe on
subscribe
Sequence Map Observer
subscribe
on on
Question2
Map
Answer …
A.
Sequence Map ObserverPublish
Sequence Map ObserverPublish
subscribe
Sequence Map Observer
subscribe
Publish
subscribe
subscribe
Sequence Map Observer
subscribe
Publish
subscribe
subscribe
Sequence Map Observer
subscribe
Publish
subscribe
subscribe on
subscribe
Sequence Map Observer
subscribe
on on
Publish
subscribe
on
( )
subscribe
Sequence Map Observer
subscribe
on on
Publish
subscribe
on
Subject
on on
Question3
Map
Answer …
A.
• refCount() Hot subscribe
subscribe
• subscribe
( ) 1 Cold Operator
subscribe subscribe on on
( ) 1( ) Scheduler
create Operator subscribeon
…
2 create Operator Scheduler
subscribeScheduler on
subscribe
( )
Scheduler
• create Operator Scheduler
Scheduler
• Scheduler
Scheduler
Sequence Observer
subscribe
Sequence Observer
subscribe
Sequence Observer
subscribe
on
• Scheduler
subscribe
Scheduler( ) on
Question4
.Next, .Completed on
Answer …
A.
.Completed
• .Next
• MergeSinkIter subscribe →
Scheduler
on observer
• .Completed queue
dispatch
.Next .Completed
•
…
Question5
Replay .Next
1. .Next
2. subscribe
Answer …
A. subscribe
• replay subscribe
•
( ) 2 create Operator Scheduler
subscribeScheduler on
subscribe
( )
Observable
1. Cold Operator subscribe
subscribe on on
Scheduler create Operator
subscribe on
2. create Operator Scheduler
subscribe Scheduler on
subscribe
observeOn, subscribeOn
observeOn, subscribeOn
• Scheduler( )
Operator observeOn, subscribeOn
observeOn on Scheduler( )
subscribeOn subscribe Scheduler( )
Sequence Map Observer
subscribe
on
observeOn
.observeOn(backgroundScheduler)
subscribe subscribe
onon
Sequence Map Observer
subscribe
on
observeOn
.observeOn(backgroundScheduler)
subscribe subscribe
onon
Sequence Map Observer
subscribe
subscribeOn
.subscribeOn(backgroundScheduler)
subscribe
ononon
subscribe
Sequence Map Observer
subscribe
subscribeOn
.subscribeOn(backgroundScheduler)
subscribe
ononon
subscribe
observeOn
• observeOn
subscribeOn
• subscribeOn
subscribeOn
•
subscribeOn
• create Operator
Scheduler( )
Observable
Question6
Map
Answer …
A.
subscribe subscribe
ononon
subscribe
Sequence Map ObserversubscribeOn Map
subscribe
on
Question7
Map
Answer …
A.
subscribe subscribesubscribe
Sequence Map ObserversubscribeOn Map
subscribe
subscribe subscribesubscribe
Sequence Map ObserversubscribeOn Map
subscribe
Sequence MainScheduler
subscribe subscribesubscribe
Sequence Map ObserversubscribeOn Map
subscribe
on on on on
Question8
Map
Answer …
A.
• ( )
( ) observeOn
on Scheduler( )
( ) subscribeOn
subscribe Scheduler( )
Driver
Driver
• Driver RxCocoa UI
Observable ( )
•
Driver
• create Operator
• Observable
create Operator
• Driver create, just, of
Operator
•
subscribe subscribeOn
create Operator
Observable
• asDriver Observable Driver
• observeOn
Observable
drive, driveNext
• Driver subscribe
drive driveNext
• 1
drive, driveNext
Driver Operator
• map Operator
•
• driveOnScheduler Operator
Question9
Map
Answer …
A.
• drive
(
Question10
Map
Answer …
A.
subscribe
Sequence Map Observer
drive
on on
Question11
Map
Observer
Answer …
A. map observer
subscribe
Sequence Map Observer
drive
onon
2
NSURLSession+Rx
NSURLSession+Rx
• rx_response rx_JSON
on
→ UI
Observable
1. Cold Operator subscribe
subscribe on on
Scheduler create Operator
subscribe on
2. create Operator Scheduler
subscribe Scheduler on
subscribe
observeOn, subscribeOn
1. subscribeOn subscribe Scheduler(
)
2. observeOn on Scheduler( )