🧑💻/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를 생성합니다.
지금까지의 내용을 이해한 뒤 그림으로 보면 이해하기 쉽습니다.
5. 앱이 실행되는 동안 이벤트를 처리합니다.
앱의 상태는 5가지로 구분됩니다.
- Not Running : 앱이 실행되지 않은 상태
- Foreground : 앱이 실행중인 상태
- Inactive : 아무런 이벤트를 받지 않는 상태
- Active : 이벤트가 발생한 상태
- Background : 앱이 백그라운드에 있고 실행되는 코드가 있는 상태
- Suspened : 앱이 백그라운드에 있고 실행되는 코드가 없는 상태
applicationDidBecomeActive : 앱이 Active 상태로 변경된 직후 호출
applicationWillResignActive : 앱이 InActive 상태로 변경되기 직전 호출
applicationDidEnterBackground : 앱이 Background 상태로 변경된 직후 호출
applicationWillEnterForeground : 앱이 Active 상태로 변경되기 직전 화면이 보이기 전 호출
6. 앱 종료 전 applicationWillTerminate 호출
7. 앱 종료
참고
반응형