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
4.1k
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
Package Traits
ikesyo
2
360
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
2.5k
Renovateで実現するライブラリの自動更新生活 / Automated Library Updates with Renovate
ikesyo
3
610
XcodeのDevelopment Assets探訪
ikesyo
1
1.2k
RenovateによるiOSライブラリーの自動更新
ikesyo
2
3.7k
2019年のSwiftモック事情
ikesyo
3
8.2k
5分でわかる!Xcode 11から使えるXCFrameworks
ikesyo
2
3.8k
Travis CIのBuild Matrixを活用して、Swift製ライブラリをLinux対応させる
ikesyo
3
2.5k
Swift Packages and XCFrameworks in Xcode 11
ikesyo
1
1.2k
Other Decks in Programming
See All in Programming
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
360
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.5k
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
520
社内での開発コミュニティ活動とモジュラーモノリス標準化事例のご紹介/xPalette and Introduction of Modular monolith standardization
m4maruyama
1
130
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
320
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
2
280
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
250
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
810
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
1
820
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
170
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
41
27k
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
11
2.7k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building Adaptive Systems
keathley
43
2.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
920
RailsConf 2023
tenderlove
30
1.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Optimizing for Happiness
mojombo
379
70k
Faster Mobile Websites
deanohume
307
31k
Scaling GitHub
holman
459
140k
Fireside Chat
paigeccino
37
3.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
200
Agile that works and the tools we love
rasmusluckow
329
21k
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❗"