Slide 1

Slide 1 text

ReactiveCocoa Pitfalls at freee @yonekawa

Slide 2

Slide 2 text

freeeͷiOSΞϓϦ͕ ReactiveCocoaΛಋೖ͔ͯ͠ Β̕ϲ݄͕ܦͪ·ͨ͠

Slide 3

Slide 3 text

• 2014/12/20 iOSΞϓϦ։ൃணख • 2014/01/10 ReactiveCocoaಋೖ • 2014/02/14 1.0.0ϦϦʔε

Slide 4

Slide 4 text

೥຤ʹҰମԿ͕ɾɾɾ

Slide 5

Slide 5 text

ReactiveCocoaΛ࢖͍ͬͯͯ freeeͰى͖ͨ໰୊΍ ϋϚΓͲ͜ΖΛ঺հ͠·͢ ஫: ReactiveCocoaͷAPI͕ͪΐ͍ͪΐ͍ग़͖ͯ·͢

Slide 6

Slide 6 text

combineLatestWith

Slide 7

Slide 7 text

combineLatestWithͱSignalͷ࣮ߦॱ • combineLatestWith͸ฒྻʹSignalΛ࣮ߦ͢Δ ͷͰൃՐ͞ΕΔॱং͸ෆఆɻϩάΠϯ͔ͯ͠Βσʔ λΛऔಘɺΈ͍ͨͳॲཧʹ࢖͏ͱϋϚΔ • ௚ྻʹ͍ͨ࣌͠ʹ͸flattenMapΛ࢖͏

Slide 8

Slide 8 text

rac_textSignal

Slide 9

Slide 9 text

rac_textSignal vs RACObserve • textϓϩύςΟʹ௚઀୅ೖ͢ΔΑ͏ͳέʔεͰγ άφϧ͕ൃՐ͠ͳ͍ɻRACObserveͰtextϓϩύ ςΟΛsubscribe͢ΔͱൃՐ͢Δ • ٯʹΩʔϘʔυ͔Βͷೖྗ͸RACObserveͩͱൃՐ ͠ͳ͍ɻrac_textSignalͰऔΒͳ͍ͱ͍͚ͳ͍ • combineLatestͯ྆͠ํൃՐ͢ΔsignalΛ࡞ͬ ͨΓͨ͠

Slide 10

Slide 10 text

sendCompleted

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

sendErrorͷޙͷsendCompleted • sendErrorͷޙʹsendCompletedΛݺΜͰ΋ݺ ͹Εͳ͍ɻ • subscribe͢ΔଆͰnextͱerrorͰڞ௨Ͱ΍Γͨ ͍ॲཧʢΠϯδέʔλΛࢭΊΔͱ͔ʣΛॻ͖͍ͨ࣌ ʹ͸ݸผʹॻ͔ͳ͍ͱ͍͚ͳ͍

Slide 13

Slide 13 text

[RACSignal empty]

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

[RACSignal empty] • RACSignalϕʔεͰ΍ΓऔΓ͍ͯ͠Δ࣌ɺ [RACSignal empty]Λฦ͢ͱ౰વnext΋error΋ൃ Ր͞Εͳ͍ • subscribeલʹΠϯδέʔλΛճͯ͠nextͱerrorͰ ࢭΊ͍ͯΔ৔߹ɺΠϯδέʔλ͕ճΓͬͺͳ͠ʹͳΔ • empty͡Όͳۭͯ͘ͷ݁ՌΛฦ͢SignalΛฦ͢ͷ͕Α ͦ͞͏

Slide 16

Slide 16 text

UITableView

Slide 17

Slide 17 text

Cellͷதʹsubscribe͍ͨ͠View͕͋Δ࣌ • ηϧ͕࠶ར༻͞ΕΔͱೋॏʹϑΥʔ ϜͷΠϕϯτΛsubscribeͯ͠ ͠·͏ • reloadͳͲߟ͑Δͱ subscriberΛഁغ͢ΔλΠϛϯ ά͕೉͍͠ • ݱঢ়͸ۤ೑ͷࡦͰ࠶ར༻΍ΊͨΓ ͯ͠Δ

Slide 18

Slide 18 text

ReactiveCocoa3.0

Slide 19

Slide 19 text

ReactiveCocoa3.0 • LTͷͨΊʹແ஡ͯ͠ಋೖ͠Α͏ͱௐ΂ͨ • طଘͷRACSignalϕʔεͷΠϯλϑΣʔεΛ asColdSignalͱ͔Ͱ͖Δͷ͸ָͦ͏ͩͬͨ • υΩϡϝϯτແ͠Ͱ࢖͍ํΛ୳Δͷ௒೉͍͠