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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
背中から、背中へ /paying forward to community
naitosatoshi
0
220
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
250
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
170
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
490
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
190
組織における AI-DLC 実践
askul
0
300
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
240
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
180
AIエージェントとPhysical AIが拓く製造業の変革(ハノーバーメッセリキャップ)
iotcomjpadmin
0
210
初めてのDatabricks勉強会
taka_aki
2
230
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
220
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
460
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
Visualization
eitanlees
152
17k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
From π to Pie charts
rasagy
0
230
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
270
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
550
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]