iOS 기초

App LifeCycle

motosw3600 2021. 12. 7. 16:15

App LifeCycle

App Programming Guide for iOS - The App Life Cycle

 

ios12이전의 App LifeCycle

1. main 함수가 실행

2. main 함수는 UIApplicationMain함수를 호출

3. UIApplicationMain함수는 앱의 본체에 해당하는 객체인 UIApplication 객체를 생성한다.

4. nib파일을 사용하는 경우나, Info.plist 파일을 읽어들여 파일에 기록된 정보를 참고하여 그외에 필요한 데이터 를 로드한다.

5. App Delegate 객체를 만들고 앱 객체와 연결하고 런루프를 만드는 등 실행에 필요한 준비를 한다.

6. 실행 완료를 앞두고 앱 객체가 앱 델리게이트에게 application:didFinishLaunchingWithOptions: 메시지를 보낸다.

7. Main run Loop 실행하고 이벤트 큐를 이용해 들어온 이벤트를 순차 처리한다.

8. 앱을 더이상 사용하지 않으면 ios System에 terminate 메세지 보냄 applicationWillTerminate: 호출

9. App종료

ios13이후 App LifeCycle

1. ios 12 버전과 마찬가지로 main함수가 UIApplication와 app delegate class를 인스턴스화

2. 그리고는 12버전과 달리 이전 작업을 하지 않고 곧장application(didFinishLanuchingWithOptions:)메서드를 호출

3. 위 함수가 호출 된 후에 main함수는 UISceneSession, UIWindowScene, window scene delegate를 인스턴스화(scene delegate의 class는 Info.plist의 Application Scene Manifest안에 Scene Configuration에서 확인할 수 있다.)

4. main함수는 Info.plist의 Application Scene Manifest안에 있는 Scene Configuration에서 storyboard의 이름을 확인하여 storyboard 사용여부를 확인. 만약에 값이 있다면 storyboard를 시작 viewController로 인스턴스화

5. main함수는 UIWindow를 인스턴스화 하고 이를 scene delegate의 window 프로퍼티에 할당

6. 이후 main함수는 시작 view controller로 인스턴스화 했던 Main storyboard를 window의 rootViewController로 할당하고 makeKeyAndVisible 메서드를 호출하여 'key window'로 지정하고 화면에 보여줌

7. 이후 scene delegate의 scene(willConnecTo:options:) 메서드가 호출된다. 이 메서드를 통해 우리는 launch process가 끝난 직후 화면이 보이기 전에 해야할 작업을 구현할 수 있다. (ex window가 제대로 설정되었는 지 확인)

※ iOS 12번과 다른 점은 application(didFinishLanuchingWithOptions:)메서드를 훨씬 일찍 호출

 

 

'iOS 기초' 카테고리의 다른 글

iOS 화면전환  (0) 2021.12.10
AppDelegate, SceneDelegate  (0) 2021.12.10
init(frame:), required init?(coder: NSCoder), awakeFromNIb()  (0) 2021.12.07
Nib, Xib  (0) 2021.12.07
ViewController LifeCycle  (0) 2021.12.07