Common
iOS Architectures
From MVC to VIPER, with Redux
Slide 2
Slide 2 text
Who am I
• App developer since iOS 4
• Years of working experience in startups
• ! @nelsont
• ! chiahsien.github.io
Slide 3
Slide 3 text
Agenda
• From MVC to VIPER
• Redux
• Summary
Slide 4
Slide 4 text
Agenda
• From MVC to VIPER
• Redux
• Summary
NO CODING
TODAY
Slide 5
Slide 5 text
Why this topic?
Slide 6
Slide 6 text
From MVC to VIPER
• Series of refactoring
• Pick one that suit your team
Slide 7
Slide 7 text
MVC
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
Model View Controller
Data structure UI Life cycle
Data manipulation
Setup view &
animation
UI Navigation
API call & biz logic
Data conversion
Data source &
Delegate
etc.
Slide 10
Slide 10 text
Massive
View Controller
Slide 11
Slide 11 text
Deal with Massive VC
• VC focus on UI related tasks
• Move non-UI related tasks to another
object
• VC communicate with this object
Slide 12
Slide 12 text
This object
• API call
• Biz logic
• Data conversion
• Data source
Slide 13
Slide 13 text
Presenter / View Model
• API call
• Biz logic
• Data conversion
• Data source
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
MVP ≈ MVVM
Slide 18
Slide 18 text
Model View VM / Presenter
Data structure UI API call
Data manipulation Life cycle Biz logic
Setup view &
animation
Data conversion
UI Navigation Data source
Delegate
etc.
Model View
VM /
Presenter
Coordinator
Data structure UI API call UI Navigation
Data
manipulation
Life cycle Biz logic
Setup view &
animation
Data conversion
Delegate Data source
etc.
Slide 25
Slide 25 text
Common codes
• API call
• Biz logic
• Data manipulation
Slide 26
Slide 26 text
Manager / Service / Helper
• API call
• Biz logic
• Data manipulation
Slide 27
Slide 27 text
Model View Presenter Coordinator
Manager /
Service
Data
structure
UI
Data
conversion
UI Navigation API call
Life cycle Data source Biz logic
Setup view &
animation
Data
manipulation
Delegate
etc.
Slide 28
Slide 28 text
Entity View Presenter Coordinator
Manager /
Service
Data
structure
UI
Data
conversion
UI Navigation API call
Life cycle Data source Biz logic
Setup view &
animation
Data
manipulation
Delegate
etc.
Slide 29
Slide 29 text
Entity View Presenter Router
Manager /
Service
Data
structure
UI
Data
conversion
UI Navigation API call
Life cycle Data source Biz logic
Setup view &
animation
Data
manipulation
Delegate
etc.
Slide 30
Slide 30 text
Entity View Presenter Router Interactor
Data
structure
UI
Data
conversion
UI Navigation API call
Life cycle Data source Biz logic
Setup view &
animation
Data
manipulation
Delegate
etc.
Slide 31
Slide 31 text
VIPER
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
MVC ➔ VIPER
Series of refactoring
Slide 34
Slide 34 text
State Management
Slide 35
Slide 35 text
State management
• MV(C/VM/P) / VIPER are UI related
patterns
• We need to find a way to manage state
Slide 36
Slide 36 text
Redux
•A state management framework
•Single source of truth
•Single place to modify state
•Unidirectional data flow
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
No content
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
Redux integration
• Presenter / Interactor send Actions to
Store
• Presenter / Interactor receive State
update notification
Slide 44
Slide 44 text
Redux
Slide 45
Slide 45 text
Summary
• A series of refactoring
• Find a pattern that suit your team
• Both VM & Presenter are great
• Recommend Coordinator for beginner
• Manage state with care