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
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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Module architecture in iOS applications
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Volodymyr Shevchenko
March 26, 2016
Programming
170
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Module architecture in iOS applications
Volodymyr Shevchenko
March 26, 2016
More Decks by Volodymyr Shevchenko
See All by Volodymyr Shevchenko
Server-side on Swift
thesantaclaus
0
49
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
contenteditable と日本語入力に向き合う
colorful12
0
200
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
340
Next.js: The final boss of Web Performance
guaca
0
260
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
Event is what happens
moro
2
780
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
370
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Jetpack Compose Mechanisms
skydoves
3
820
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Building the Perfect Custom Keyboard
takai
2
910
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
520
GraphQLとの向き合い方2022年版
quramy
50
15k
Scaling GitHub
holman
464
140k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Code Review Best Practice
trishagee
74
20k
Transcript
Module architecture in iOS applications by Volodymyr Shevchenko software engineer
@ Yalantis
Dependency Visualizer https://github.com/PaulTaykalo/objc-dependency-visualizer ./generate-objc-dependencies-to-json.rb -d -s "" > origin.js ./generate-objc-dependencies-to-json.rb
-w -s "" > origin.js OR open index.html
None
None
None
None
None
Нам бы хотелось упорядоченности. Прозрачности. Наглядности. Отсутствия энтропии.
None
Single responsibility principle
None
None
None
Module
MFMailComposerViewController
No more FAT view controllers
Facade
--> input interface <-- output interface <-- @rootViewController Abstract module
<-- sendEmailDidCancel <-- @rootViewController Send Email module --> recipients, subject,
body, etc <-- sendEmailDidSent <-- sendEmailDidSaved <-- sendEmail: didFailedWithError:
Service
Vine
None
None
None
Video recording module --> @directoryPath <-- videoRecordingDidCancel --> insertVideo: <--
videoRecordingDidFinish <-- @rootViewController <-- videoRecording DidRequestInsertAction <-- @secondsLeft
Video selection module <-- videoSelectionDidCancel <-- videoSelection: didFinishWithVideo: <-- @rootViewController
Video trimming module <-- videoTrimmingDidCancel <-- videoTrimming: didFinishWithVideo: <-- @rootViewController
--> @maxDuration --> @originalVideoAsset
<-- videoPreviewDidCancel <-- videoPreviewDidFinish <-- @rootViewController --> setVideoAsset: containsAudio: Video
preview module --> setLocationTitle: <--> @caption <-- videoPreviewOnSelectMusicAction <-- videoPreviewOnSelectLocationAction <-- videoPreviewOnEditClipsAction <-- videoPreviewOnRemoveLocationAction <-- videoPreviewOnRemoveMusicAction
Audio selection module <-- @rootViewController --> audioSelectionDidCancel --> audioSelection: didCancelFinishWithMusic:
Location selection module <-- @rootViewController --> locationSelectionDidCancel --> locationSelection: didFinishWithLocation:
Edit clips module <-- @rootViewController --> @directoryPath <-- editClipsDidFinish <--
editClipsDidCancel --> reload
Making Vine module <-- makingVineDidCancel <-- makingVineDidFinish withFinalVideo: location: description:
<-- @rootViewController
Flow controller Making Vine Video recording Video selection Video trimming
Video preview Audio selection Location selection Edit clips Router Factory Module store View Controllers provider Making Vine service
None
None
Thanks TheSantaClal_ls
[email protected]