앱 라이프사이클
: 앱 실행에서 종료까지 주기
: 메모리나 데이터 관리를 통한 사용성 ⬆️ 보안처리 가능
UIApplication, AppDelegate
상황: AppDelegate 객체가 UIApplication 객체에서 보낸 메시지를 수신하고 각각을 실행하는 기능을 정의합니다.
Not Running: 앱이 실행되고 있지 않은 상태
Inactive: 앱이 실행되고 있으나 이벤트가 수신되지 않은 상태
Active: 앱이 실행 중이고 이벤트가 발생한 상태
Background: 앱이 백그라운드에 있지만, 이벤트가 발생하지 않는 상태 실행 중인 코드
Suspended: 앱이 백그라운드에 있고 실행 중인 코드가 없는 상태
AppDelegate.swift 파일의 델리게이트 함수
application(_:didFinishLaunching:) Run when the app first starts
applicationWillResignActive: - Executed when the app is moved from active to inactive
applicationDidEnterBackground: - Run when the app is in the background
applicationWillEnterForeground: - Executes when the app is moved from the background to the foreground (not yet running in the foreground)
applicationDidBecomeActive: - When the app is active and running
applicationWillTerminate: - Run when app closes
SceneDelegate
iOS 13 이상부터 지원되는 다중 장면 기능에 잘 대응하기 위해
AppDelegate / SceneDelegate
AppDelegate
1. func application(_:didFinishLaunchingWithOptions: ) -> Bool
이 방법으로 애플리케이션 설정이 진행됩니다.
2. func application(_:configurationForConnecting:options: ) -> UISceneConfiguration
이 메서드는 응용 프로그램이 새 장면/창을 제공하려고 할 때 호출됩니다.
3. func application(_:didDiscardSceneSessions: )
사용자가 장면을 떠날 때 호출됩니다.
SceneDelegate
1. scene(_: willConnectTo: 옵션: )
이것은 UISceneSession 수명 주기에서 호출되는 첫 번째 메서드입니다. 첫 번째 콘텐츠 보기인 새 UIWindow를 만들고 창의 rootViewController를 설정합니다.
(창: 앱이 작동하는 뷰포트)
2. sceneWillEnterForeground(_ :)
장면이 전경으로 전환될 때 호출됩니다.
1) 배경 → 전경일 때
2) 처음 활성화 될 때
3. sceneDidBecomeActive(_ :)
비활성 → 활성 전환 시 호출됩니다.
4. sceneWillResignActive(_ :)
활성 → 비활성 전환 시 호출됩니다.
ex) 앱 전환기 상황
5. sceneDidEnterBackground(_ :)
장면이 전경에서 배경으로 전환될 때 호출됩니다.
다음에 포그라운드로 복귀할 때 복원할 수 있도록 상태 정보를 저장하거나 데이터를 저장하거나 공유 리소스를 반환합니다.
6. sceneDidDisconnect(_ :)
장면이 배경으로 들어가면 시스템이 리소스를 확보하기 위해 연결을 끊을 가능성이 있습니다.
(disconnect :session is disconnected / 앱이 종료된다는 의미는 아님 )