본문 바로가기
iOS/설명

[iOS] App launch Sequence

by Sky Titan 2022. 6. 6.
728x90
 

Apple Developer Documentation

 

developer.apple.com

App launch Sequence

  • 앱을 런치할 때 시스템에 의해 복잡한 여러 단계의 시퀀스가 실행이 된다.
  • 런치 시퀀스동안, UIKit은 app delegate에 있는 메소드들을 호출해서 app이 사용자 상호작용에 대비하고, 앱의 요구사항에 맞는 여러 작업들을 실행할 수 있게 한다.

  1. user나 시스템이 앱을 실행 시, 시스템은 앱을 prewarm시킨다.
    1. iOS15 이후 버전에서는, 시스템은 디바이스 상태에 따라서 앱을 prewarm 시킬 수 있는데, 앱이 사용가능한 상태가 되기 전까지 사용자가 기다리는 시간을 최소화하기 위해 nonrunning 애플리케이션 프로세스들을 실행한다.
  2. 시스템이 Xcode에서 제공하는 'main()' 함수를 실행한다.
  3. main() 함수는 UIApplication과 app delegate 인스턴스를 생성하는 UIApplicationMain(_:_:_:_:)을 호출한다.
  4. UIKit은 Info.plist파일이나 target의 커스텀 프로퍼티 탭에 정의된 default storyboard를 로드해온다. 만약 앱이 이런 단계를 스킵한다면 storyboard를 사용하지 않는다.
  5. UIKit이 app delegate에 있는 application(_:willFinishLaunchingWithOptions:) 메소드를 호출한다.
  6. UIKit이 app의 ViewController들과 app delegate에 있는 추가적인 메소드들을 실행하기 위해 UI Restoration을 진행한다.
  7. UIKit이 app delegate에 있는 application(_:didFinishLaunchingWithOptions:) 메소드를 호출한다

 

요약

   
1 시스템이 앱을 prewarm
2 main() 함수 실행
3 UIApplicationMain()호출해서 app delegate, UIApplication 인스턴스 생성
4 storyboard 로드
5 application(_:willFinishLaunchingWithOptions:) 호출
6 UI Restoration
7 application(_:didFinishLaunchingWithOptions:) 호출

 

728x90

댓글