본문 바로가기

iOS 개발/App 개발 관련

[iOS] MVC 구조의 앱을 MVVM 으로 바꾸기

raywenderlich - iOS MVVM Tutorial: Refactoring from MVC

 

MVVM 으로 바꿀 때 장점

ViewController 가 단순해진다.

Business logic 을 더 잘 표현 할 수 있다.

ViewModel 이 ViewController 보다 테스트하기 쉽다.

ViewModel?   ViewController? 

MVVM 구조에서 ViewController 는 View 를 바꾸고 View 에서 받은 입력을 ViewModel 로 전달하는 일만 한다. 이 이외에 MVC 구조의 ViewController 가 하던 모든 일을 ViewModel 에게 전달할 것!

 

ViewModel 은 View 입력을 받아 Model 갱신, Model 의 정보를 ViewController 에게 전달, Data formatting 등을 책임진다.

ViewModel 과 View 를 연결(Binding)하는 방법들

KVO (Key - Value Observing) : key path 를 사용해 property 들을 관찰하고 변화가 있을 때 알림을 받는 방법.

 

FRP (Functional Reactive Programming) : event 와 data 를 stream 으로 처리하는 패러다임.

 

Delegation : 값이 바뀌면 delegate 를 통해 알림을 받는 방법.

 

Boxing : property observer 를 통해 값의 변화를 알림받는 방법.