이 포스트는 edwith의 iOS 부스트캠프 강의를 듣고 정리한 내용 입니다.


View Objects (뷰 객체)

  • 애플리케이션 내에서 사용자가 볼 수 있는 객체.

  • 자신이 보이는 방법을 알고 있고 사용자 동작에 응답할 수 있다.

  • 뷰 객체의 주된 목적`

    • 애플리케이션의 모델 객체의 데이터를 보여주고 해당 데이터를 편집할 수 있도록 하는 것이다.
  • 뷰 객체는 MVC 애플리케이션의 모델 객체와는 일반적으로 분리된다


Controller Objects

  • 하나 이상의 애플리케이션 뷰 객체와 하나 이상의 모델 객체 사이의 코디네이터 또는 중개자 역활

  • Model-View-Controller 디자인 패턴에서 컨트롤러 객체(Controller)는 사용자가 버튼을 탭/클릭하거나 텍스트 필드에서 텍스트를 입력하는 것 처럼, 뷰 객체에서 이루어진 사용자 동작 및 의도를 해석, 신규 혹은 변경된 데이터를 모델 객체에 전달한다

    • 따라서 컨트롤러 객체는 뷰 객체로 하여금 모델 객체의 변경사항을 인지하거나, 그 반대의 경우가 가능하도록 하는 매개체가 된다
  • 컨트롤러 객체는 애플리케이션의 설정 및 조정 작업을 수행할 수도 있다.

  • 다른 객체들의 life cycle를 관리하기도 한다.

  • iOS 환경의 Cocoa Touch 프레임워크는 코디네이팅 컨트롤러, 뷰 컨트롤러의 두 가지 기본 컨트롤러 유형을 제공한다.

ControllerImage


코디네이팅 컨트롤러 (Coordinating Controller)

  • 애플리케이션 전체 혹은 일부 기능을 감독하고 관리한다.

  • 애플리케이션별로 다른 로직이 각 애플리케이션에 주입(injected)되는 장소라고 할 수 있다

코디네이팅 컨트롤러의 기능

  • 델리게이션(Delegation)메시지에 응답하고 알림(Notifications)을 관리

  • 사용자가 버튼과 같은 컨트롤을 탭 하거나 클릭함에 따라 전송되는 동작 메시지(action message)에 응답.

  • 객체 간의 연결을 확립하거나 기타 설정 작업을 수행 (예: 애플리케이션을 시작하는 경우)

  • 소유한(owned) 객체의 life cycle 관리

iOS 애플리케이션에서는 뷰 컨트롤러가 코디네이팅 컨트롤러의 역활을 겸하는 경우가 많다.


뷰 컨트롤러 (View Controller)

  • UIKit 에서 뷰 컨트롤러는 콘텐츠를 화면에 표시하는 뷰를 관리

  • 해당 뷰에 대한 참조(Reference)를 유지

  • 뷰 컨트롤러는 이 뷰의 프레젠테이션(presentation) 및 후속 뷰로의 전환(transition)을 관리

    • 이와 관련된 모든 프레젠테이션 동작 뷰 컨트롤러 객체에 의해 관리되고 구현된다.

    • 또한, 모달뷰를 표시

    • 메모리 부족 경고에 응답

    • 기기의 방향(orientation)이 바뀔 때 뷰를 회전