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
Sho Ikeda
August 20, 2016
Programming
1
3.8k
ReactiveCocoa 5.0
iOSDC Japan 2016での発表資料です #iosdc
https://iosdc.jp/2016/c/node/189
Sho Ikeda
August 20, 2016
Tweet
Share
More Decks by Sho Ikeda
See All by Sho Ikeda
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
1.6k
Renovateで実現するライブラリの自動更新生活 / Automated Library Updates with Renovate
ikesyo
3
480
XcodeのDevelopment Assets探訪
ikesyo
1
870
RenovateによるiOSライブラリーの自動更新
ikesyo
2
3.2k
2019年のSwiftモック事情
ikesyo
3
7.7k
5分でわかる!Xcode 11から使えるXCFrameworks
ikesyo
2
3.5k
Travis CIのBuild Matrixを活用して、Swift製ライブラリをLinux対応させる
ikesyo
3
2.4k
Swift Packages and XCFrameworks in Xcode 11
ikesyo
1
1.1k
How to Mock Protocols in Swift
ikesyo
1
2.8k
Other Decks in Programming
See All in Programming
社内 LT 会を発足し、アウトプット文化を醸成させるために考えたこと・やったこと / Starting internal LT meetings and fostering an output culture
mackey0225
3
120
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
160
SDCon2024: Enabling DevOps and Team Topologies thru architecture: architecting for fast flow
cer
PRO
0
780
Architectures with Lightweight Stores: New Rules and Options
manfredsteyer
PRO
0
100
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
140
【Go言語】ジェネリクス
tomo1227
0
170
Temporalを取り巻く仕様を整理する
sajikix
0
110
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
ぼっちを避けて楽しむためのアノテコノテ / Various Tips and Tricks to Avoid Loneliness and Have Fun
nrslib
3
1.7k
初心者がおさえておきたいAWS CDKのベストプラクティス 2024
konokenj
15
7.3k
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
I/O Extended Android in Korea 2024 ~ Whats new in Android development tools
pluu
0
250
Featured
See All Featured
Building Effective Engineering Teams - LeadDev
addyosmani
47
2.2k
Raft: Consensus for Rubyists
vanstee
134
6.5k
The Cult of Friendly URLs
andyhume
75
5.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
262
13k
Designing for humans not robots
tammielis
247
25k
The Brand Is Dead. Long Live the Brand.
mthomps
52
36k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
35
6.3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
How GitHub (no longer) Works
holman
305
140k
Atom: Resistance is Futile
akmur
261
25k
Typedesign – Prime Four
hannesfritz
37
2.2k
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❗"