Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ReactiveCocoa Pitfalls at freee

ReactiveCocoa Pitfalls at freee

10/18にfreeeで開催されたReactiveCocoa TokyoのLT資料です
http://connpass.com/event/8680/

http://www.freee.co.jp/

Kenichi Yonekawa

October 18, 2014
Tweet

More Decks by Kenichi Yonekawa

Other Decks in Programming

Transcript

  1. ReactiveCocoa
    Pitfalls at freee
    @yonekawa

    View Slide

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

    View Slide

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

    View Slide

  4. ೥຤ʹҰମԿ͕ɾɾɾ

    View Slide

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

    View Slide

  6. combineLatestWith

    View Slide

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

    View Slide

  8. rac_textSignal

    View Slide

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

    View Slide

  10. sendCompleted

    View Slide

  11. View Slide

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

    View Slide

  13. [RACSignal empty]

    View Slide

  14. View Slide

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

    View Slide

  16. UITableView

    View Slide

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

    View Slide

  18. ReactiveCocoa3.0

    View Slide

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

    View Slide