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
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
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
890
Tumblr iOS architecture
irace
5
680
Node.js for mobile developers
irace
1
190
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
三人寄ればチューリング完全
puhitaku
4
1.4k
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
210
自宅NWにISR4331を導入してみた話
okaits
0
120
DDDのエッセンスを取り入れたAIでの開発
ak2ie
0
170
関東Kaggler会発表資料
takoi
1
270
8bit CPU 2026
koba789
1
390
Oracle MCP Servers Explained
thatjeffsmith
0
310
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
430
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
140
【GCC2026】TrueHDRIを用いたルックデブ環境とライティングテクニック
bandainamcostudios
PRO
0
130
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.3k
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
510
sira's awesome portfolio website redesign presentation
elsirapls
0
330
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
WCS-LA-2024
lcolladotor
0
800
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
How GitHub (no longer) Works
holman
316
150k
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]