UIApplication 인스턴스가 생성됨, 이때 UIApplication은 사용자로부터 발생하는 이벤트들을 AppDelegate로 전달하는 역할을 함
iOS 개발자라면 근본적으로 알아야 할 App Life Cycle에 관련된 질문이다.
사용자가 앱 아이콘을 눌러 앱을 실행하게 되면 위와 같은 형태의 생명주기를 통해 메모리에 할당되었다가 소멸됨.
여기서 swift 이전에 objc로 작성되었던 앱은 c기반이었기 때문에 앱이 실행될 때 운영체제가 가장먼저 main.m 파일 안의 main()함수를 호출하여 앱이 시작된다.
swift가 c언어 기반은 아니지만 objc와 함께 사용되는 언어이기 때문에 동일하게 main() 함수를 호출하는데, 우선 xcode로 생성한 iOS개발 템플릿에는 main.swift 파일은 보이지 않는다. 이는 UIKit 프레임워크 안에 main()함수를 숨겨놓았기 때문이다. 따라서 앱이 실행되면 가장 먼저 운영체제가 개발자는 찾을 수 없는 main() 함수를 호출하며, main()함수는 뒤이어 UIApplicationMain() 함수를 호출하여 UIApplicaiton 객체가 생성되는 것이다.
swift는 main함수가 없지만 @main이라는 어노테이션 표기가 있음 → 이 표기를 통해서 objc의 이벤트 루프 및 초기설정 진행을 진행하는 과정이 대체된다.
UIApplicationMain → 코코아터치 프레임워크에서 앱의 LifeCycle을 실행하는 함수