🧑‍💻/Swift

iOS 앱 생명주기

유리맥 2021. 7. 12. 23:59
반응형

iOS 앱의 시작, 실행 중, 종료까지의 생명주기를 알아보겠습니다.

앱을 실행하면 다음과 같이 진행됩니다.


1. UIApplication 객체를 생성합니다.

 

2. @UIApplicationMain()가 표시된 클래스를 찾아 AppDelegate 객체를 생성합니다.

@UIApplicationMain()은 프로젝트 생성 시 AppDelegate 클래스에 기본으로 추가됩니다.
UIApplicationMain 함수의 4번째 delegateClassName에 "AppDelegate"라고 지정할 것을 @UIApplicationMain() Annotation 만으로 쉽게 대체할 수 있었습니다.

func UIApplicationMain(_ argc: Int32, 
                     _ argv: UnsafeMutablePointer<UnsafeMutablePointer<CChar>?>, 
                     _ principalClassName: String?, 
                     _ delegateClassName: String?) -> Int32

Swift 5.3 이후 @main 이 추가되었습니다. @main은 프로그램의 시작점을 표시하는 방법입니다. 자세한 내용은 0281-main-attribute를 참고하세요.

 

3. willFinishLaunchingWithOptions / didFinishLaunchingWithOptions

앱 실행 준비 직전/직후에 호출됩니다.


4. 사용자의 액션을 받는 Run Loop를 생성합니다.


지금까지의 내용을 이해한 뒤 그림으로 보면 이해하기 쉽습니다.

App Lifecycle

 

5. 앱이 실행되는 동안 이벤트를 처리합니다.

App 상태

앱의 상태는 5가지로 구분됩니다.

  • Not Running : 앱이 실행되지 않은 상태
  • Foreground : 앱이 실행중인 상태
    • Inactive :  아무런 이벤트를 받지 않는 상태
    • Active : 이벤트가 발생한 상태
  • Background : 앱이 백그라운드에 있고 실행되는 코드가 있는 상태
  • Suspened : 앱이 백그라운드에 있고 실행되는 코드가 없는 상태
applicationDidBecomeActive : 앱이 Active 상태로 변경된 직후 호출
applicationWillResignActive : 앱이 InActive 상태로 변경되기 직전 호출
applicationDidEnterBackground : 앱이 Background 상태로 변경된 직후 호출
applicationWillEnterForeground : 앱이 Active 상태로 변경되기 직전 화면이 보이기 전 호출

 

6. 앱 종료 전 applicationWillTerminate 호출

 

7. 앱 종료


참고

반응형