본문 바로가기

프로그래밍/iOS

MVC(Model-View-Controller) 패턴

1. Model

- Model 객체는 앱에 관련된 데이터를 캡슐화하고 해당 데이터를 조작하고 처리하는 논리 및 계산을 정의한다.

- App의 What을 담당

※ UI와 독립되어 있다. 

2. View

- View 객체는 사용자가 볼 수 있는 앱의 객체이다.

- View 객체는 앱의 Model 객체의 데이터를 표시하고 해당 데이터를 수정할 수 있도록 하는 것

- 수정할 수 있도록 하는 것이지만 Model 객체와는 분리되어야 함.

- 이유는 재사용하고 재구성하기 때문에 앱 간의 일관성을 제공해야 하기 때문이다.

- Controller의 통제를 받는다.

3. Controller

- Controller 객체는 하나 이상의 Model / View 객체 사이에서 중개자 역할을 한다.

- App에 대한 설정 및 조정 작업을 수행하고 다른 객체의 생명 주기를 관리한다.

- 어떻게 화면에 표시할 것인지에 대해 관심을 가진다.

- App의 How를 담당

 

Communication

- Model

- 데이터를 만들거나 수정하는 View Layer의 사용자 작업은 Controller 객체를 통해 전달되어 Model 객체를 생성하거나 업데이트한다.

- Model 객체가 변경되면(예: 네트워크 연결을 통해 새 데이터가 수신됨) 적절한 View 객체를 업데이트하는 Controller 객체에 대해 통보한다.

- View

- Controller 객체를 통해 Model 데이터의 변화를 전달받는다.

- 사용자에 의한 변경 사항(예: 텍스트 필드에 입력된 텍스트)을 Controller 객체를 통해 응용 프로그램의 Model 객체에 전달한다.

- Controller

- View 객체에서 만든 사용자 Action을 확인하고 변경되거나 새로운 데이터를 Model Layer에 전달한다.

- Model 객체가 변경되면 Controller 객체는 새로운 Model 데이터를 View 객체에 전달하여 표시할 수 있다.

 

서로의 관계

- Model과 Controller

- Controller는 Model에 직접적으로 접근할 수 있지만, Model은 Controller에 Notification & KVO(Key-Value Observing) 방식을 통해 Model의 변화를 알림

- Model과 View

- Model은 UI에 독립적이며 View와 소통할 수 없다. 물론 View 또한 Model과 소통이 불가능하다.

- View와 Controller

- Controller는 View에 대해 outlet을 이용해 View에게 직접적으로 접근할 수 있다. (Ctrl + Drag로 할 수 있음)

- View는 Controller에게 구조적으로 미리 정해진 방식으로 Controller에게 행위에 대한 요청(delegate)와 데이터에 대한 요청 (data source)를 할 수 있다. 또한, action(View) - target (Controller)의 구조로 사용자의 action에 따라 필요한 함수를 호출할 수 있다.

 

출처 1: Apple 공식 문서 

 

Model-View-Controller

Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid. Model-View-Controller The Model-View-Controller (MVC) design pattern assigns objects in an ap

developer.apple.com

출처 2 : Developing iOS 11 Apps with Swift by Stanford 2번째 강의 MVC

 

Developing iOS 11 Apps with Swift - Free Course by Stanford on iTunes U

Developing iOS 11 Apps with Swift, Stanford, Computer Science, iTunes U, educational content, iTunes U

itunes.apple.com