Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Practical iOS application modularity
Bryan Irace
August 28, 2015
Technology
1
510
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
Tweet
Share
More Decks by Bryan Irace
See All by Bryan Irace
iOS at Tumblr
irace
2
1.3k
Building Tumblr for iOS
irace
0
530
Modularity in mobile applications
irace
0
110
When the iOS SDK says “Jump,” ask “How High?”
irace
7
1.3k
Don't be "an Objective-C" or "a Swift Developer"
irace
5
700
Tumblr iOS architecture
irace
5
480
Node.js for mobile developers
irace
1
110
Introduction to Objective-C and Cocoa Touch
irace
7
520
Building apps that play nicely with other apps
irace
1
260
Other Decks in Technology
See All in Technology
スクラムのスケールとチームトポロジー / Scaled Scrum and Team Topologies
daiksy
1
440
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
oracle4engineer
PRO
0
140
【個人的】オブジェクト指向の現在地
toranoana
0
170
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
3
9.1k
FoodTechにおける商流・金流・物流の進化/Evolution of Commercial, Financial, and Logistics in FoodTech
dskst
0
400
紙にまつわる苦しみを機能化してきた カミナシの歴史
kaminashi
0
1.2k
Accelerated Computing for NLP on AWS
shokout
1
200
機械学習システムアーキテクチャ入門 #1
asei
3
1.2k
スタートアップと技術選定と AWS
track3jyo
PRO
2
340
oakのミドルウェアを書くときの技のらしきもの
toranoana
0
130
Modern Android dependency injection
hugovisser
1
130
Target SDK Versionを上げない Notification runtime permission対応
napplecomputer
0
140
Featured
See All Featured
A Tale of Four Properties
chriscoyier
149
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
4
510
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
119
28k
Unsuck your backbone
ammeep
659
55k
The Mythical Team-Month
searls
209
39k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Building an army of robots
kneath
299
40k
Writing Fast Ruby
sferik
612
57k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
For a Future-Friendly Web
brad_frost
166
7.4k
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! bryan@tumblr.com