ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS 앱 생명주기
    🧑‍💻/Swift 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. 앱 종료


    참고

    반응형

    댓글

Designed by Tistory.