앱 실행 순서
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