マルチスレッドrxswift @ 社内rxswift勉強会

138
RxSwift @ RxSwift

Upload: -

Post on 16-Apr-2017

949 views

Category:

Software


0 download

TRANSCRIPT

Page 1: マルチスレッドRxSwift @ 社内RxSwift勉強会

RxSwift@ RxSwift

Page 2: マルチスレッドRxSwift @ 社内RxSwift勉強会

https://https://speakerdeck.com/ukitaka/rxswift-kodorideingufalsekan-suo-at-she-nei-rxswiftmian-qiang-hui/bricklife/rxswiftfalseobserveontosubscribeonwoli-jie-suru

Page 3: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

• subscribe subscribe

Operator

source subscribe

Page 4: マルチスレッドRxSwift @ 社内RxSwift勉強会

• RxSwift GCD

• observeOn subscribeOn

Page 5: マルチスレッドRxSwift @ 社内RxSwift勉強会

• iOS

(RxSwift ) GCD

NSOperationQueue

Page 6: マルチスレッドRxSwift @ 社内RxSwift勉強会

• RxSwift v2.5.0 (2016 7 master)

• 1

Page 7: マルチスレッドRxSwift @ 社内RxSwift勉強会

Observable

Page 8: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 9: マルチスレッドRxSwift @ 社内RxSwift勉強会

1 Cold Operator

subscribe subscribe on on

Page 10: マルチスレッドRxSwift @ 社内RxSwift勉強会

1( ) Scheduler

create Operator subscribeon

Page 11: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 12: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 13: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Observer

Page 14: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Observer

subscribe

Page 15: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Observer

subscribe

on

Page 16: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question1

Page 17: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 18: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 19: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 20: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 21: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map Observer

subscribe

Page 22: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

subscribe

source

subscribe

Page 23: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

subscribe

subscribe on

Page 24: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

subscribe

on on

Page 25: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question2

Page 26: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 27: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 28: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 29: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 30: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map ObserverPublish

Page 31: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map ObserverPublish

subscribe

Page 32: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map Observer

subscribe

Publish

subscribe

Page 33: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

subscribe

Publish

subscribe

Page 34: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

subscribe

Publish

subscribe

subscribe on

Page 35: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

subscribe

on on

Publish

subscribe

on

Page 36: マルチスレッドRxSwift @ 社内RxSwift勉強会

( )

subscribe

Sequence Map Observer

subscribe

on on

Publish

subscribe

on

Subject

on on

Page 37: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question3

Page 38: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 39: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 40: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 41: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 42: マルチスレッドRxSwift @ 社内RxSwift勉強会

• refCount() Hot subscribe

subscribe

• subscribe

Page 43: マルチスレッドRxSwift @ 社内RxSwift勉強会

( ) 1 Cold Operator

subscribe subscribe on on

Page 44: マルチスレッドRxSwift @ 社内RxSwift勉強会

( ) 1( ) Scheduler

create Operator subscribeon

Page 45: マルチスレッドRxSwift @ 社内RxSwift勉強会

Page 46: マルチスレッドRxSwift @ 社内RxSwift勉強会

2 create Operator Scheduler

subscribeScheduler on

subscribe

( )

Page 47: マルチスレッドRxSwift @ 社内RxSwift勉強会

Scheduler

• create Operator Scheduler

Page 48: マルチスレッドRxSwift @ 社内RxSwift勉強会

Scheduler

• Scheduler

Page 49: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 50: マルチスレッドRxSwift @ 社内RxSwift勉強会

Scheduler

Page 51: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Observer

subscribe

Page 52: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Observer

subscribe

Page 53: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Observer

subscribe

on

Page 54: マルチスレッドRxSwift @ 社内RxSwift勉強会

• Scheduler

subscribe

Scheduler( ) on

Page 55: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question4

Page 56: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 57: マルチスレッドRxSwift @ 社内RxSwift勉強会

.Next, .Completed on

Page 58: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 59: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

.Completed

Page 60: マルチスレッドRxSwift @ 社内RxSwift勉強会

• .Next

• MergeSinkIter subscribe →

Scheduler

on observer

Page 61: マルチスレッドRxSwift @ 社内RxSwift勉強会

• .Completed queue

dispatch

.Next .Completed

Page 62: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question5

Page 63: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 64: マルチスレッドRxSwift @ 社内RxSwift勉強会

Replay .Next

1. .Next

2. subscribe

Page 65: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 66: マルチスレッドRxSwift @ 社内RxSwift勉強会

A. subscribe

Page 67: マルチスレッドRxSwift @ 社内RxSwift勉強会

• replay subscribe

Page 68: マルチスレッドRxSwift @ 社内RxSwift勉強会

( ) 2 create Operator Scheduler

subscribeScheduler on

subscribe

( )

Page 69: マルチスレッドRxSwift @ 社内RxSwift勉強会

Observable

1. Cold Operator subscribe

subscribe on on

Scheduler create Operator

subscribe on

2. create Operator Scheduler

subscribe Scheduler on

subscribe

Page 70: マルチスレッドRxSwift @ 社内RxSwift勉強会

observeOn, subscribeOn

Page 71: マルチスレッドRxSwift @ 社内RxSwift勉強会

observeOn, subscribeOn

• Scheduler( )

Operator observeOn, subscribeOn

Page 72: マルチスレッドRxSwift @ 社内RxSwift勉強会

observeOn on Scheduler( )

Page 73: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribeOn subscribe Scheduler( )

Page 74: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 75: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map Observer

subscribe

on

observeOn

.observeOn(backgroundScheduler)

subscribe subscribe

onon

Page 76: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map Observer

subscribe

on

observeOn

.observeOn(backgroundScheduler)

subscribe subscribe

onon

Page 77: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map Observer

subscribe

subscribeOn

.subscribeOn(backgroundScheduler)

subscribe

ononon

subscribe

Page 78: マルチスレッドRxSwift @ 社内RxSwift勉強会

Sequence Map Observer

subscribe

subscribeOn

.subscribeOn(backgroundScheduler)

subscribe

ononon

subscribe

Page 79: マルチスレッドRxSwift @ 社内RxSwift勉強会

observeOn

• observeOn

Page 80: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribeOn

• subscribeOn

Page 81: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribeOn

subscribeOn

• create Operator

Scheduler( )

Observable

Page 82: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question6

Page 83: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 84: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 85: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 86: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 87: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe subscribe

ononon

subscribe

Sequence Map ObserversubscribeOn Map

subscribe

on

Page 88: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question7

Page 89: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 90: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 91: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 92: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 93: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 94: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe subscribesubscribe

Sequence Map ObserversubscribeOn Map

subscribe

Page 95: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe subscribesubscribe

Sequence Map ObserversubscribeOn Map

subscribe

Sequence MainScheduler

Page 96: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe subscribesubscribe

Sequence Map ObserversubscribeOn Map

subscribe

on on on on

Page 97: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question8

Page 98: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 99: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 100: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 101: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 102: マルチスレッドRxSwift @ 社内RxSwift勉強会

• ( )

Page 103: マルチスレッドRxSwift @ 社内RxSwift勉強会

( ) observeOn

on Scheduler( )

Page 104: マルチスレッドRxSwift @ 社内RxSwift勉強会

( ) subscribeOn

subscribe Scheduler( )

Page 105: マルチスレッドRxSwift @ 社内RxSwift勉強会

Driver

Page 106: マルチスレッドRxSwift @ 社内RxSwift勉強会

Driver

• Driver RxCocoa UI

Observable ( )

Page 107: マルチスレッドRxSwift @ 社内RxSwift勉強会

Driver

• create Operator

• Observable

Page 108: マルチスレッドRxSwift @ 社内RxSwift勉強会

create Operator

• Driver create, just, of

Operator

subscribe subscribeOn

Page 109: マルチスレッドRxSwift @ 社内RxSwift勉強会

create Operator

Page 110: マルチスレッドRxSwift @ 社内RxSwift勉強会

Observable

• asDriver Observable Driver

• observeOn

Page 111: マルチスレッドRxSwift @ 社内RxSwift勉強会

Observable

Page 112: マルチスレッドRxSwift @ 社内RxSwift勉強会

drive, driveNext

• Driver subscribe

drive driveNext

• 1

Page 113: マルチスレッドRxSwift @ 社内RxSwift勉強会

drive, driveNext

Page 114: マルチスレッドRxSwift @ 社内RxSwift勉強会

Driver Operator

• map Operator

• driveOnScheduler Operator

Page 115: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question9

Page 116: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 117: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 118: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 119: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 120: マルチスレッドRxSwift @ 社内RxSwift勉強会

• drive

(

Page 121: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question10

Page 122: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 123: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Page 124: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 125: マルチスレッドRxSwift @ 社内RxSwift勉強会

A.

Page 126: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

drive

on on

Page 127: マルチスレッドRxSwift @ 社内RxSwift勉強会

Question11

Page 128: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 129: マルチスレッドRxSwift @ 社内RxSwift勉強会

Map

Observer

Page 130: マルチスレッドRxSwift @ 社内RxSwift勉強会

Answer …

Page 131: マルチスレッドRxSwift @ 社内RxSwift勉強会

A. map observer

Page 132: マルチスレッドRxSwift @ 社内RxSwift勉強会

subscribe

Sequence Map Observer

drive

onon

Page 133: マルチスレッドRxSwift @ 社内RxSwift勉強会

2

NSURLSession+Rx

Page 134: マルチスレッドRxSwift @ 社内RxSwift勉強会

NSURLSession+Rx

• rx_response rx_JSON

on

→ UI

Page 135: マルチスレッドRxSwift @ 社内RxSwift勉強会
Page 136: マルチスレッドRxSwift @ 社内RxSwift勉強会

Observable

1. Cold Operator subscribe

subscribe on on

Scheduler create Operator

subscribe on

2. create Operator Scheduler

subscribe Scheduler on

subscribe

Page 137: マルチスレッドRxSwift @ 社内RxSwift勉強会

observeOn, subscribeOn

1. subscribeOn subscribe Scheduler(

)

2. observeOn on Scheduler( )

Page 138: マルチスレッドRxSwift @ 社内RxSwift勉強会