MVC Design Pattern(3)
이 포스트는 edwith의 iOS 부스트캠프 강의를 듣고 정리한 내용 입니다.
View Objects (뷰 객체)
-
애플리케이션 내에서 사용자가 볼 수 있는 객체.
-
자신이 보이는 방법을 알고 있고 사용자 동작에 응답할 수 있다.
-
뷰 객체의 주된 목적
`애플리케이션의 모델 객체의 데이터를 보여주고 해당 데이터를 편집할 수 있도록 하는 것이다.
-
뷰 객체는 MVC 애플리케이션의 모델 객체와는 일반적으로 분리된다
Controller Objects
-
하나 이상의 애플리케이션
뷰 객체와 하나 이상의 모델 객체 사이의 코디네이터 또는 중개자 역활
-
Model-View-Controller 디자인 패턴에서
컨트롤러 객체(Controller)
는 사용자가 버튼을 탭/클릭하거나 텍스트 필드에서 텍스트를 입력하는 것 처럼,뷰 객체에서 이루어진 사용자 동작 및 의도를 해석, 신규 혹은 변경된 데이터를 모델 객체에 전달
한다따라서 컨트롤러 객체는 뷰 객체로 하여금 모델 객체의 변경사항을 인지하거나, 그 반대의 경우가 가능하도록 하는 매개체가 된다
-
컨트롤러 객체는
애플리케이션의 설정 및 조정 작업을 수행할 수도 있다.
-
다른 객체들의 life cycle를 관리
하기도 한다. -
iOS 환경의 Cocoa Touch 프레임워크는
코디네이팅 컨트롤러
,뷰 컨트롤러
의 두 가지 기본 컨트롤러 유형을 제공한다.
코디네이팅 컨트롤러 (Coordinating Controller)
-
애플리케이션 전체 혹은 일부 기능을 감독하고 관리한다.
-
애플리케이션별로 다른 로직이 각 애플리케이션에 주입(injected)되는 장소라고 할 수 있다
코디네이팅 컨트롤러의 기능
-
델리게이션(Delegation)메시지에 응답하고 알림(Notifications)을 관리
-
사용자가 버튼과 같은 컨트롤을 탭 하거나 클릭함에 따라 전송되는 동작 메시지(action message)에 응답.
-
객체 간의 연결을 확립하거나 기타 설정 작업을 수행 (예: 애플리케이션을 시작하는 경우)
-
소유한(owned) 객체의 life cycle 관리
iOS 애플리케이션에서는 뷰 컨트롤러가 코디네이팅 컨트롤러의 역활을 겸하는 경우가 많다.
뷰 컨트롤러 (View Controller)
-
UIKit 에서 뷰 컨트롤러는 콘텐츠를 화면에 표시하는 뷰를 관리
-
해당 뷰에 대한 참조(Reference)를 유지
-
뷰 컨트롤러는 이 뷰의 프레젠테이션(presentation) 및 후속 뷰로의 전환(transition)을 관리
-
이와 관련된 모든 프레젠테이션 동작 뷰 컨트롤러 객체에 의해 관리되고 구현된다.
-
또한, 모달뷰를 표시
-
메모리 부족 경고에 응답
-
기기의 방향(orientation)이 바뀔 때 뷰를 회전
-