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
ReactiveCocoa 5.0
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Sho Ikeda
August 20, 2016
Programming
4.2k
1
Share
ReactiveCocoa 5.0
iOSDC Japan 2016での発表資料です #iosdc
https://iosdc.jp/2016/c/node/189
Sho Ikeda
August 20, 2016
More Decks by Sho Ikeda
See All by Sho Ikeda
大規模アプリにおけるXcode Previews実用化までの道のり
ikesyo
0
3.8k
Package Traits
ikesyo
2
1.2k
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
3.2k
Renovateで実現するライブラリの自動更新生活 / Automated Library Updates with Renovate
ikesyo
3
700
XcodeのDevelopment Assets探訪
ikesyo
1
1.5k
RenovateによるiOSライブラリーの自動更新
ikesyo
2
4k
2019年のSwiftモック事情
ikesyo
3
8.5k
5分でわかる!Xcode 11から使えるXCFrameworks
ikesyo
2
4k
Travis CIのBuild Matrixを活用して、Swift製ライブラリをLinux対応させる
ikesyo
3
2.6k
Other Decks in Programming
See All in Programming
AIと共に生きる技術選定 2026
sgash708
0
120
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
0
300
Agentic Elixir
whatyouhide
0
440
Running Swift without an OS
kishikawakatsumi
0
880
AIを導入する前にやるべきこと
negima
2
320
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1k
Making the RBS Parser Faster
soutaro
0
650
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
2.3k
tRPCの概要と少しだけパフォーマンス
misoton665
2
260
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
130
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
27
18k
AI-DLC Deep Dive
yuukiyo
9
5.4k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
320
BBQ
matthewcrist
89
10k
Evolving SEO for Evolving Search Engines
ryanjones
0
190
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
220
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Thoughts on Productivity
jonyablonski
76
5.1k
How STYLIGHT went responsive
nonsquared
100
6.1k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
KATA
mclloyd
PRO
35
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Transcript
ReactiveCocoa 5.0 @ikesyo iOSDC Japan 2016 2016-08-20 Sat #iosdc
@ikesyo • ͍͚͠ΐʔʗా ᠳ • ͯͳ@ژ • https://twitter.com/ikesyo • https://github.com/ikesyo
None
None
None
RAC 5.0
RAC 5.0 • Repository Split • API Design • Signal
• SignalProducer • Properties • Atomic • Others
Repository Split • ReactiveCocoa: ReactiveSwift + UI layers • ReactiveSwift:
The core, platform-independent Swift APIs • ReactiveObjC: Objective-C APIs (e.g. RACSignal) • ReactiveObjCBridge: Swift <-> ObjC bridging layer
API Design • Swift 3 API Design Guidelines: • #3001
[5.0] Swift 3.0 Groundwork • #3028 Isolate unavailable APIs in 5.0. • Easier transition by the use of "@available(*, unavailable, renamed:..."
Signal • Lifetime Semantics: • #2959 [5.0] Changes to the
lifetime semantic of Signal. • ϝϞϦʔorϦιʔεϦʔΫ͕ͪ͠ͳͷΛղফ
SignalProducer • SignalProducer.buffer is removed: • #3028 Isolate unavailable APIs
in 5.0. • Use Properties or SignalProducer.replayLazily instead • SignalProducer.on: • #3097 Pre- and post-start hooks in SignalProducer.on. • started -> starting, started ʹׂ
Properties • #3023 Unifying read-only properties, and making PropertyProtocol class
bound. • Renamed PropertyProtocol is now class bound • AnyProperty -> Property • ConstantProperty -> Property(value:) • #2922 Property composition operators. • Signal, SignalProducerͱಉͷΦϖϨʔλʔͷՃ
Atomic • Optimizations: • #2984 Adopt inout parameter in Atomic.modify.
• #3123 Alter Atomic.modify to return the result of the supplied action.
Others • #3030 Add Lifetime to enable observation of object
deallocation in Swift class MyController { private let token = Lifetime.Token() var lifetime: Lifetime { return Lifetime(token) } func viewDidLoad() { super.viewDidLoad() fooBarProducer() .take(until: lifetime.ended) // .take(until: rac_lifetime.ended) .startWithNext { ... } } }
Others • #3133 Generic ScopedDisposable // Generic ScopedDisposable class ScopedDisposable<InnerDisposable:
Disposable>: Disposable { ... } class MyController { private let disposable = ScopedDisposable(CompositeDisposable()) func viewDidLoad() { super.viewDidLoad() disposable += fooBarProducer().startWithNext { ... } // disposable.innerDisposable.add(fooBarProducer().startWithNext { ... }) } }
! Happy Reactive Coding!! !
Thank you❗"