Core Objects of iOS App

iOS App을 동작시키는 UIKit Framework의 핵심 객체들에 대해 알아보자.

앱이 구동되고 종료될 때 까지, UIKit Framework 은 앱의 핵심 동작을 관장한다. 앱의 심장격인 객체는 UIApplication 객체로, iOS로부터 이벤트를 받아 여러 custom 객체로 이벤트를 전달한다. UIApplication 외 다른 UIKit 클래스들도 custom code 를 호출하는 방식으로 앱의 동작에 관여한다.

아래 그림은 앱 동작에 있어 핵심적인 역할을 하는 객체들의 관계를 보여준다. – 기본적으로 iOS 앱은 MVC(model-view-controller) 디자인 패턴을 따른다. MVC 패턴은 데이터(model)를 뷰(view)와 분리시켜 코드 재활용성을 높이는 등 여러 이점들을 제공한다.

Key objects in an iOS app (from iOS Developer Library)

핵심 객체들의 역할은 아래와 같다.

UIApplication object

UIApplication 객체는 System 으로부터 이벤트를 받아 Custom Objects 로 이벤트를 전달하고 상위 레이어의 앱 동작을 조정한다. app delegate 객체 내의 custom logic 들은 UIApplication 객체와 상호작용한다.

App delegate object

App delegate  객체는 custom 객체로서 앱 런칭시점에 UIApplicationMain 함수에 의해 생성된다.

주로 앱의 상태 (Not running, Active, Inactive, Background, Suspended ) 전이를 담당하며, 앱 런칭 시점의 초기화 및 백그라운드 상태로의 전환등을 처리한다 (참고:  Managing App State Changes.)

iOS5 이후부터는 다른 앱의 이벤트를 App delegate 를 통해 핸들링 할 수 있다고 한다 . App delegate 는 UIResponder 클래스를 상속하므로 Responder Chain에 따라 UIApplication 이 처리하지 않은 이벤트를 처리할 수 있다.

Document and data model objects

Data model 객체는 앱의 컨텐트를 저장한다. 예를 들어 은행앱의 경우 거래트랜젝션을 저장할 수 있고, 그림그리기 앱의 경우 이미지 또는 이미지 조작 순서등을 저장할 수 있다.

앱은 Data model 객체를 Document 객체(custom subclasses of UIDocument)를 이용하여 처리할 수 있다. Document 객체 사용은 필수는 아니지만, 하나의 파일 또는 파일 패키지에 속해있는 데이터를 그룹화 하는데 편리한 방법을 제공한다. (참고: Defining a Document-Based Data Model.)

View controller objects

View controller 객체는 앱의 컨텐트가 화면에 보여지게 하는 역할을 담당한다. 하나의 View Controller 객체는 하나의 뷰와 뷰의 서브뷰를 관리한다. View Controller 객체는 자신이 관리하는 뷰를 앱의 윈도우에 위치시킴으로써 뷰가 화면에 보여지도록 한다.

UIViewController 클래스는 여러 View Controller 객체들의 부모클래스이다. UIViewController 는 기본적으로 뷰를 로딩하고, 화면에 뷰를 보여지게 하고, 뷰를 전환(디바이스 변화에 따른)하는 등의 기본적인 동작들을 지원한다.

UIKit 이나 다른 Framework들은 Image picker, Tab bar interface, Navigation interface 등의 추가적인 View Controller 클래스를 제공함으로써 기본적인 시스템 인터페이스를 수행할 수 있도록 한다. (참고: View Controller Programming Guide for iOS)

UIWindow object

UIWindow 객체는 화면에 보여지는 뷰 객체들을 조정하는 역할을 한다. 대부분의 앱은 컨텐트를 메인 스크린에 나타내는 윈도우 한 개를 소유하지만, 별도의 화면을 위한 UIWindow 객체 추가도 가능하다.

화면에 보여지는 컨텐트를 바꾸기 위해서는 View Controller 를 이용해야 한다. 윈도우 자체에서 컨텐트를 바꾸지 못한다.

뷰를 호스팅 하는 것 외에 UIWindow 객체는 UIApplication과의 상호작용을 통해 이벤트를 뷰와 View Controller에 전달하는 역할도 수행한다.

View, control and layer objects

View와 control은 컨텐트의 시각적 표현을 담당한다.

뷰는 직사각형 영역에 컨텐트를 표현하고, 영역 내의 이벤트를 감지하는 객체이다. 컨트롤은 뷰의 특정 타입으로서 버튼, 텍스트 필드, 토글 스위치 등이 있다.

UIKit Framework 는 다양한 타입의 컨텐트 (ex. 웹,이미지파일 등) 를 보여주기 위한 여러가지 기본 뷰를 제공한다. 기본 뷰 외에 개발자는 UIView를 직접 상속함으로써 자신만의 뷰를 만들 수 있다.

앱은 뷰와 컨트롤 계층(Hierarchy)에 Core Animation Layer 를 포함시킬 수 있다. Layer 객체는 정확히 말하면, 비쥬얼 컨텐트를 보여주는 data 객체이다. 뷰는 Layer 객체 또는 Custom layer 객체를 사용하여 복잡한 에니메이션 효과 및 시각적 효과를 표현할 수 있다.

* Reference : iOS Developer Library (iOS App Programming Guide – Core App Objects)
Advertisements
Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: