[swift] AppDelegate 정리
AppDelegate의 역할
👉 AppDelegate는 App( Application )이 해야할 일을 대신 구현한다는 의미이다. 여기에서 App이 해야할 일이란, Background 진입, Foreground 진입, 외부에서의 요청 (apns) 등을 말한다.
@UIApplicationMain
모든 iOS 앱들은 UIApplicationMain 함수를 실행한다. 이 때 생성되는 것 중 하나가 UIApplication 객체다.
앱은 UIApplication이라는 객체로 추상화 되어 Run Loop를 통해 프로그램 코드를 실행한다.
개발자들은 AppDelegate를 통해 UIApplication의 역할의 일부를 위임받아 UI를 그릴수 있다.
👉 이때 UIApplication이 위임받을 클래스를 구별하는 방법은 @UIApplication annotaition 이다.
UIWindow
👉 앱 view계층구조의 루트를 나타낸다.
Life Cycle
👉 AppDelegate에 구현된 UIApplicationDelegate protocol의 method들을 사용하여 생명 주기 사이에 커스텀 코드를 실행시킬 수 있다.
App state
Process Life Cycle
application(_:willFinishLaunchingWithOptions:)
👉 app의 실행 준비가 끝나기 직전에 호출된다.
application(_:didFinishLaunchingWithOptions:)
👉 App 실행을 위한 모든 준비가 끝난 후 화면이 사용자에게 보여지기 직전에 호출된다
applicationWillTerminate(_:)
👉 App이 종료되기 직전에 호출된다.
UI Life Cycle
applicationWillEnterForeground(_:)
👉 App이 Background 또는 Not-Running 상태에서 Foreground로 들어가기 직전에 호출된다
applicationDidBecomeActive(_:)
👉App이 active 상태로 진입하고 난 직후 호출 된다.
applicationWillResignActive(_:)
👉 App이 Active에서 In-Active 상태로 진입하기 직전에 호출된다
applicationDidEnterBackground(_:)
👉 App이 background 상태에 진입한 직후 호출 된다
중요한 데이터를 저장하거나 점유하고 있는 공유 자원을 해제한다.