[iOS] Application Life Cycle

RudinP·2024년 2월 3일
0

Study

목록 보기
129/227

앱 실행 순서

main()

  • OS가 앱을 실행할 때 처음으로 실행됨.
  • 진입점 함수(Entry Point Function) 라고 함
  • AppDelegate 파일에 @main 부분으로 자동으로 main 함수가 만들어짐.
    • Objective-C 파일에는 main 함수가 있음.
    • 별도로 수정할 일은 거의 없기에 @main으로 자동으로 코드 생성
    • 이 특성이 붙어있는 클래스를 Delegate로 사용

UIApplicationMain()

  • 두 가지 객체가 만들어짐
    • UIApplication 객체: 앱을 대표하는 객체
    • UIApplication Delegate
UIApplicationMain(argc, argv, nil, appDelegateClassName);
//3번째 파라미터 nil을 전달하면 UIApplication 인스턴스가 만들어짐. (대부분의 경우)
//서브클래싱했다면 클래스 이름을 전달하면 됨.(거의 없는 경우)
  • 객체가 정상적으로 만들어지면 Main Event Loop 시작됨.
  • 런치 스크린이 표시됨

Load Main UI

  • 메인 스토리보드가 로드됨.
  • SwiftUI를 사용할 경우 이 단계는 무시됨.
  • 로딩할 스토리보드는 iOS13 버전 전후/씬 지원 여부에 따라 달라짐.
    • iOS 13 이전 프로젝트 설정에 mainstoryboard file base name에 입력된 파일이 로딩
    • iOS13 이상, 씬 사용하는 경우 Info.plist의 Applcation Scene Manifest의 스토리보드를 로딩.
  • 앱을 실행할 준비를 마친 단계

Start Initialization

  • AppDelegate에서 초기화를 실행
//딕셔너리 안에 iOS가 직접 앱을 실행했을 때 왜 이앱을 실행했는지가 담겨져있음.
// .bluetoothCentrals, .cloudKitShareMetadata, .eventAttribution, .location 등이 있음
// 보통 true를 리턴함
// 초기화를 실행할 때 특별히 할 일이 없다면 구현할 필요 없음
func application(...,willFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey : Any]? = nil,...) -> Bool 

Restore UI State

  • 초기화 시 같이 실행
  • 사용자가 다른 앱으로 이동하거나 홈 화면으로 이동하면 현재 UI 상태를 복원 가능
  • 이 기능이 구현되어 있다면 실행됨, 아니라면 생략

End Initialization

  • 마지막으로 Delegate 함수가 실행됨.
// 딱 한 번 초기화할 코드가 있다면 이 코드에서 초기화
// 카카오톡 등 서드파티 서비스 연동에 필요한 초기화 작업도 여기에 구현
func application(..., didFinishLaunchingithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
  • 이후 첫번째 화면이 나타남
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글