Slide 1

Slide 1 text

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.

Slide 19

Slide 19 text

UI Navigation • Push / Pop • Present / Dismiss • Master / Detail

Slide 20

Slide 20 text

Problem • Hard to reuse • Lack of flexibility • Hard to co-work • Doesn’t make sense

Slide 21

Slide 21 text

Solution • Each VC should be independent • An object having bird’s view manages VCs’ flow

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Coordinator • Create and setup VCs • Manage VCs’ flow • Manage child coordinators

Slide 24

Slide 24 text

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

Slide 46

Slide 46 text

Q & A ! @nelsont ! chiahsien.github.io