App Architecture

ellyheetov·2021년 3월 27일
0
post-thumbnail

App Architecture

UIKit Framework에서는 iOS와 tvOS를 위한 핵심 객체들을 제공해 준다. 이러한 객체들을 사용하여 스크린에 내용을 보여주고, 내용 간에 상호작용을 하며, 관리를 할 수 있게 된다. App은 기본적인 행위를 하기위해 UIKit에 의존하고 있는데, UIKit는 구현하고자 하는 기능을 위한 여러 방법들을 제공해준다.

Xcode에서 iOS(tvOS도 포함) 프로젝트를 생성하면 몇 가지 객체들이 자동으로 생성된다. 프로젝트를 실행하자마자 실행시켜도 아무 이상 없이 앱이 켜질 수 있는 이유는 여기에 있다.

Xcode에서 App 템플릿을 사용하여 만든 앱의 구조는 다음과 같다.

App을 빌드하기 시작하면, Xcode는 소스 파일들을 컴파일 하고 프로젝트를 위한 App Bundle을 생성한다. 앱 번들은 앱과 관련된 자원과 코드를 포함하고 있는 디렉토리이다. 여기서 말하는 자원은 image assets, storyboard files, string files, app metadata등등을 포함한다.

UIKit App

필수적인 여러가지 자원들 중 이 게시글에서는 UIKit App의 코드 구조를 살펴보려고 한다.

UIKit는 앱을 위한 핵심 객체들을 제공한다. 이 핵심 객체들은 앱에 화면을 띄우거나 main event loop를 실행하거나 system간 상요작용하는 객체들을 말한다. 아마 우리는 앱을 만들때에 최소한의 수정만을 가지고 해당 객체들을 사용하게 되 것이다. 각각의 객체가 언제 수정되고, 어떤 객체가 수정되는지 아는 것은 앱을 구현하는데 중요한 요소이다.

MVC

UIKit의 구조는 Model-View-Controller(MVC) 디자인 패턴을 따르고 있다. 그 객체 안에서는 그들의 목적에 따라 또 다시 나뉘게 된다.

Model

앱의 데이터와 비즈니스 로직을 관리한다.

  • Data Object
  • Document : disk 기반의 파일에 속한 데이터 구조를 조직하는 객체이다. Foundation framework는 String, numbers, arrays 등 다른 데이터 타입을 정의하고 있다.

Controller

model과 view객체 사이에 다리역할을 함으로써 적절한 타이밍에 데이터를 주고받는다.

  • UIApplication : 앱의 main event loop를 작동시키고 전반적인 앱의 life cycle을 관리한다.
  • Application Delegate : 앱의 root 객체를 관리한다. UIApplication과 같이 시스템과의 상호작용을 관리한다. 앱의 중심 데이터를 초기화 하고 scene을 관리한다. app 외부에서 일어나는 동작이나 다운로드 완료 notification, push notification 등과 같은 상황에 반응한다.
  • View Controller : 앱의 인터페이스를 관리한다. 하나의 뷰 컨트롤러는 하나의 root view를 가지고 있는데, 이것은 여러개의 sub view를 가질 수 있다. 뷰의 계층 구조는 view controller에 의하여 다뤄진다. 경우에 따라 다른 객체들과 협력할 수 있다.

View

데이터를 시각적으로 뿌려주는 방식을 제공한다.

  • UIWindow : 윈도우는 view controller와 같이 이벤트 와 앱에 근본이 되는(fundamental) 작업들을 처리한다.
  • Views and UI Objects

참고
https://developer.apple.com/documentation/uikit/about_app_development_with_uikit

profile
 iOS Developer 좋아하는 것만 해도 부족한 시간

0개의 댓글