MVC 디자인 패턴의 목표는 애플리케이션에서 로직과 데이터 처리를 담당하는 코드를 프리젠테이션(presentation)코드와 분리하는 것이다. 이 개념에서 모델(Model)은 애플리케이션에서 사용되는 데이터를 캡슐화하고, 뷰(View)는 유저 인터페이스를 표현 및 관리하는 역할을 담당하며, 컨트롤러(Controller)는 기본적인 애플리케이션의 로직을 담당하는데 뷰의 입력을 모델이 반영하고 또 모델의 변화를 뷰에 갱신하는 역할을 한다. 이러한 접근방법의 핵심은 모델이 애플리케이션의 프리젠테이션 부분에 대해 전혀 알지 못한다는 것이다. 모델은 단지 어떻게 데이터를 다루고 저장하는지, 컨트롤러의 요청이 있을 때 어떻게 처리해야 하는지만 알고 있으면 된다. 마찬가지로 뷰는 데이터와 애플리케이션의 로직에 대해 아는 것이 없다.
iOS 5 SDK와 오브젝티브-C와 같은 객체지향 프로그래밍 환경에서는 모델, 뷰 그리고 컨트롤러가 오브젝트가 된다. 애플리케이션이 오직 하나의 모델, 뷰 그리고컨트롤러를 가지는 것은 아니다. 실제로 앱은 여러 가지의 뷰 오브젝트, 컨트롤러 오브젝트 그리고 모델 오브젝트로 되어 있는 경우가 많다.
뷰 컨트롤러 오브젝트가 모델과 상호작용을 하는 방법은 모델 오브젝트가 노출한 메서드와 속성을 이용하는 것이다. 사실 이 방법은 일반적인 객체지향 프로그래밍 환경에서 하나의 오브젝트가 다른 오브젝트와 연동하는 방식과 다를 게 없다.
그러나 뷰 컨트롤러가 뷰와 상호작용을 하는 방식은 조금 복잡하다. 이는 아웃렛(Outlet)과 액션(Action)이라는 타깃-액션(Target-Action)패턴을 이용한다.
-출처 : 핵심만 골라 배우는 iOS 5 프로그래밍, 제이펍 2011
iOS 5 SDK와 오브젝티브-C와 같은 객체지향 프로그래밍 환경에서는 모델, 뷰 그리고 컨트롤러가 오브젝트가 된다. 애플리케이션이 오직 하나의 모델, 뷰 그리고컨트롤러를 가지는 것은 아니다. 실제로 앱은 여러 가지의 뷰 오브젝트, 컨트롤러 오브젝트 그리고 모델 오브젝트로 되어 있는 경우가 많다.
뷰 컨트롤러 오브젝트가 모델과 상호작용을 하는 방법은 모델 오브젝트가 노출한 메서드와 속성을 이용하는 것이다. 사실 이 방법은 일반적인 객체지향 프로그래밍 환경에서 하나의 오브젝트가 다른 오브젝트와 연동하는 방식과 다를 게 없다.
그러나 뷰 컨트롤러가 뷰와 상호작용을 하는 방식은 조금 복잡하다. 이는 아웃렛(Outlet)과 액션(Action)이라는 타깃-액션(Target-Action)패턴을 이용한다.
-출처 : 핵심만 골라 배우는 iOS 5 프로그래밍, 제이펍 2011
'iOS' 카테고리의 다른 글
iOS5에서 SQLite3사용하기 링크 (0) | 2012.03.08 |
---|---|
iOS5에서는 UIViewController.parentViewController가 nil이다. (0) | 2012.03.07 |