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
Practical iOS application modularity
Search
Bryan Irace
August 28, 2015
Technology
720
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Practical iOS application modularity
Slides from Yahoo’s NYC Mobile Developer Conference (
http://ymdcnyc.tumblr.com
) on 8/26/2015.
Bryan Irace
August 28, 2015
More Decks by Bryan Irace
See All by Bryan Irace
iOS at Tumblr
irace
2
1.6k
Building Tumblr for iOS
irace
0
740
Modularity in mobile applications
irace
0
160
When the iOS SDK says “Jump,” ask “How High?”
irace
7
1.5k
Don't be "an Objective-C" or "a Swift Developer"
irace
5
880
Tumblr iOS architecture
irace
5
670
Node.js for mobile developers
irace
1
190
Introduction to Objective-C and Cocoa Touch
irace
7
810
Building apps that play nicely with other apps
irace
1
460
Other Decks in Technology
See All in Technology
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
380
世界、断片、モデル。そして理解
ardbeg1958
1
110
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
220
KiCAD講習会②
tutcreators
0
110
穢れた技術選定について
watany
5
460
AICoEでAIネイティブ組織への進化
yukiogawa
0
170
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.1k
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
2
3.6k
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
0
100
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
0
220
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.1k
Speed Design
sergeychernyshev
33
1.9k
Rails Girls Zürich Keynote
gr2m
96
14k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
Producing Creativity
orderedlist
PRO
348
40k
How to build a perfect <img>
jonoalderson
1
5.8k
Google's AI Overviews - The New Search
badams
0
1.1k
Visualization
eitanlees
152
17k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
GraphQLとの向き合い方2022年版
quramy
50
15k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Transcript
Mobile Developer Conference N Y C 8 26 15 Practical
iOS application modularity Bryan Irace
M D C N Y C
M D C N Y C
M D C N Y C
M D C N Y C + (UIApplication *)sharedApplication NS_EXTENSION_UNAVAILABLE_IOS
M D C N Y C Limit which parts of
the codebase know about which other parts.
M D C N Y C When concerns are well-separated,
individual sections can be reused, as well as developed and updated independently. -Wikipedia
M D C N Y C One big codebase Small
Isolated Knowable Components Many Easily or
M D C N Y C Modularity = • Easier
to build separate applications • New products • iOS or OS X • iOS extensions • watchOS applications
M D C N Y C Modularity = • Additional
overhead • More repositories, READMEs to update, version numbers to increment • Tooling complexity • CocoaPods, Carthage, Gradle, etc.
M D C N Y C { "name": "ComposeUI", "summary":
“Tumblr’s composition UI for iOS.", "platforms": { "ios": "8.0" }, "requires_arc": true, "frameworks": [ "Foundation", "UIKit", ], "source_files": "Classes/**/*.{h,m}", "resources": "Resources/*", "dependencies": { "SharedUI": [], } } { "name": "SharedUI", "summary": "UI components shared across Tumblr’s apps and extension", "platforms": { "ios": "8.0" }, "requires_arc": true, "frameworks": [ "Foundation", "UIKit" ], "source_files": "Classes/**/*.{h,m}", "resources": "Resources/*" }
M D C N Y C pod 'Reachability', '3.2' pod
'MTMigration', '0.0.3' pod 'HockeySDK', '3.7.1' pod '1PasswordExtension', '1.1.0'
M D C N Y C Development pods
M D C N Y C Development pods • No
need to version • Can be anywhere on disk, e.g. in the app’s repository • Easy to make one pull request against multiple modules
M D C N Y C pod 'ComposeUI', :path =>
‘Components/ComposeUI' pod 'ExploreUI', :path => 'Components/ExploreUI' pod 'SharedUI', :path => 'Components/SharedUI' pod 'CoreTumblr', :path => 'Components/CoreTumblr' pod 'CoreExplore', :path => 'Components/CoreExplore' pod 'Logger', :path => 'Components/Logger'
M D C N Y C Compose UI Core Tumblr
Tumblr SDK Explore UI Core Explore Network Abstractions Shared UI Logger Video Player Audio Share extension Today widget App
M D C N Y C Compose UI Core Tumblr
Tumblr SDK Explore UI Core Explore Network Abstractions Shared UI Logger Video Player Audio
M D C N Y C Flexibility • Can always
turn dev. pods into “real pods” • Xcode project only knows about .framework files • Could always move away from CocoaPods
M D C N Y C Summary • Modular codebases
facilitate rapid product development • “Development pods” provide many benefits of modularity without too much overhead
M D C N Y C : bryan : irace
Thank you!
[email protected]