Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Practical iOS application modularity
Search
Bryan Irace
August 28, 2015
Technology
730
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
750
Modularity in mobile applications
irace
0
170
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
890
Tumblr iOS architecture
irace
5
680
Node.js for mobile developers
irace
1
200
Introduction to Objective-C and Cocoa Touch
irace
7
830
Building apps that play nicely with other apps
irace
1
460
Other Decks in Technology
See All in Technology
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
220
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
1.2k
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
240
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
140
Tab5をRubyで動くパソコンにする
kishima
2
280
ASTを使って影響範囲を特定する
nealle
0
130
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
180
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
290
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
240
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
250
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
290
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
A better future with KSS
kneath
240
18k
The SEO Collaboration Effect
kristinabergwall1
1
550
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Become a Pro
speakerdeck
PRO
31
6.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
How GitHub (no longer) Works
holman
316
150k
4 Signs Your Business is Dying
shpigford
187
23k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
580
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
KATA
mclloyd
PRO
35
15k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
320
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]