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.7k
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.2k
Renovateで実現するライブラリの自動更新生活 / Automated Library Updates with Renovate
ikesyo
3
440
XcodeのDevelopment Assets探訪
ikesyo
1
760
RenovateによるiOSライブラリーの自動更新
ikesyo
2
3k
2019年のSwiftモック事情
ikesyo
3
7.6k
5分でわかる!Xcode 11から使えるXCFrameworks
ikesyo
2
3.3k
Travis CIのBuild Matrixを活用して、Swift製ライブラリをLinux対応させる
ikesyo
3
2.3k
Swift Packages and XCFrameworks in Xcode 11
ikesyo
1
1k
How to Mock Protocols in Swift
ikesyo
1
2.7k
Other Decks in Programming
See All in Programming
今、知っておきたい! 生成AIエージェントの世界
elith
3
350
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
350
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
610
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
230
1인 개발자로 행복하게 살기 - GDG 송도 헬로월드 2024
benjaminkim
1
5.6k
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
640
データアナリストが行うDatabricksを活用したETLの自動化事例
shinoa
0
260
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
330
GitHub Copilotのススメ
marcy731
0
180
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
Build with AI 2024 Seoul - 제로부터 시작하는 Flutter with Gemini 생활 - 박제창
itsmedreamwalker
0
200
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
4.9k
Featured
See All Featured
Embracing the Ebb and Flow
colly
79
4.1k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Fireside Chat
paigeccino
20
2.6k
Practical Orchestrator
shlominoach
181
9.7k
Happy Clients
brianwarren
91
6.4k
Designing Experiences People Love
moore
136
23k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
How STYLIGHT went responsive
nonsquared
92
4.8k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Clear Off the Table
cherdarchuk
83
310k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
154
14k
What the flash - Photography Introduction
edds
64
11k
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❗"