앱 실행 순서

main()
- OS가 앱을 실행할 때 처음으로 실행됨.
 
- 진입점 함수(Entry Point Function) 라고 함
 
- AppDelegate 파일에 
@main 부분으로 자동으로 main 함수가 만들어짐.
- Objective-C 파일에는 main 함수가 있음.
 
- 별도로 수정할 일은 거의 없기에 @main으로 자동으로 코드 생성
 
- 이 특성이 붙어있는 클래스를 Delegate로 사용
 
 
UIApplicationMain()
- 두 가지 객체가 만들어짐
UIApplication 객체: 앱을 대표하는 객체 
UIApplication Delegate 
 
UIApplicationMain(argc, argv, nil, appDelegateClassName);
- 객체가 정상적으로 만들어지면 Main Event Loop 시작됨.
 
- 런치 스크린이 표시됨
 
Load Main UI
- 메인 스토리보드가 로드됨.
 
- SwiftUI를 사용할 경우 이 단계는 무시됨.
 
- 로딩할 스토리보드는 iOS13 버전 전후/씬 지원 여부에 따라 달라짐.
- iOS 13 이전 프로젝트 설정에 
mainstoryboard file base name에 입력된 파일이 로딩 
- iOS13 이상, 씬 사용하는 경우 Info.plist의 
Applcation Scene Manifest의 스토리보드를 로딩. 
 
- 앱을 실행할 준비를 마친 단계
 
Start Initialization
func application(...,willFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey : Any]? = nil,...) -> Bool 
Restore UI State
- 초기화 시 같이 실행
 
- 사용자가 다른 앱으로 이동하거나 홈 화면으로 이동하면 현재 UI 상태를 복원 가능
 
- 이 기능이 구현되어 있다면 실행됨, 아니라면 생략
 
End Initialization
func application(..., didFinishLaunchingithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool