앱의 기본 구조
main()
- main() 함수 실행 시 시스템으로부터 전달받은 두 개의 인자값과 AppDelegate 클래스를 이용하여 UIApplicationMain() 함수를 호출하고, 그 결과로 UIApplication 객체를 반환한다.
- 생성된 UIApplication 객체는 UIKit 프레임워크에 속해 있으므로 이후 앱 제어권은 UIKit 프레임워크로 이관된다.
UIApplicationMain()
- 앱의 엔트리 포인트.
- 앱의 핵심 객체를 생성하는 프로세스를 핸들링하고, 스토리보드 파일로부터 앱의 유저 인터페이스를 읽어들일 뿐만 아니라 우리가 작성한 커스텀 코드를 호출해줌으로써 앱 생성 초기에 필요한 설정을 구현할 수 있게 해준다.
- 이벤트를 입력받기 위한 이벤트 루프를 실행시키기도 함.
UIApplication
- UIApplicationMain() 이 생성하는 앱의 본체라고 할 수 있는 객체. 사실상 앱 자체를 의미한다.
- info.plist 파일을 바탕으로 앱에 필요한 데이터와 객체를 로드한다.
- 우리가 작성한 커스텀 코드나 객체들, 더 나아가 기능까지 통틀어 UIApplication에 속해있는 하위객체임.
- UIApplication을 목적과 의도에 맞게 서브클래싱하기 위해 AppDelegate라는 대리 객체를 내세우고 커스텀 코드를 처리할 수 있는 권한을 부여함.
AppDelegate
- AppDelegate는 UIApplication 으로붵 위임받은 일부 권한을 이용하여 커스텀 코드와 상호작용하는 역할을 담당하고, 이를 통해 우리가 필요한 코드를 구현할 수 있도록 도와준다.
- 오직 하나의 인스턴스만 생성될 수 있도록 보장받고, 앱이 처음 만들어질 때 객체가 생성되고, 앱이 종료되면 함께 소멸한다.