AppleApp/Cocoa Touch2010. 7. 8. 14:50
아이폰 인터페이스는 크게 세 가지로 구성된다.
하나는 UIWindow, 다른 하나는 UIViewController, 마지막으로 UIView이다.

아이폰 어플리케이션에서는 AppDelegate를 통하여(말 그대로 application인스턴스의 일부분을 위임한 것이다.)
하나의 (UIWindow *)window인스턴스만을 가질 수 있다.

이 window인스턴스만으로는 아무것도 할 수가 없으며,
사용자에게 실질적인 내용을 보여주기 위해서는 (UIView *)view가 필요하다.
window인스턴스에 view를 띄우기 위해서는 다음과 같은 코드를 이용하면 된다.
[window addSubview:view];

하지만 이와 같은 방식은 그저 그림 보여주기일 뿐 view에서는 사용자의 이벤트를 처리한다거나 하는 일련의 작업들을 처리할 수 가 없다. (물론 프로그래머에 따라 - 특히 게임 프로그래머 - view에다가 이벤트 처리 메소드를 넣는 경우도 있다.) 이를 위해서 (UIViewController *)viewController를 사용하게 된다.
이를 사용하기 위한 방법은 (UIViewController *)viewController인스턴스에 작성된 view를 연결시키기만 하면 된다. (viewController.view에 (UIView)view인스턴스의 주소값을 복사하면 된다.) 
window인스턴스에 view를 띄우기 위해서는 다음과 같은 코드를 이용하면 된다.
[window addSubview:viewController.view];
이벤트처리까지 하고자 한다면 ViewController.m에 이벤트 처리를 위한 메소드만 추가하면 된다.

UIViewController클래스가 view인스턴스를 하나만 제공하기 때문에 하나의 viewController인스턴스에 하나의 view인스턴스라는 인식이 강하지만, 개발 형태에 따라 하나의 viewController에 여러 (UIView *)인스턴스를 하위로 연결할 수도 있고(view로부터 이벤트를 받아서 다른 view인스턴스로 전환하는 메소드를 실행한다.) viewController에 하위로 다른 (UIViewController *)인스턴스를 연결할 수도 있다.

그래서 이 세 가지 인터페이스 중점 요소에 대하여서는 다음과 같이 이해하면 쉽다.
1. UIWindow: 어플리케이션이 보여지기 위한 창
2. UIView: 어플리케이션이 보여주는 실제 내용물
3. UIViewController: 내용물과 관련한 이벤트 처리기
Posted by studio2b 마이클

댓글을 달아 주세요

  1. 좋은 정보 고맙습니다.

    2011.08.20 16:14 [ ADDR : EDIT/ DEL : REPLY ]