IOS&Mac

[swift] AppDelegate 정리

MOVE🔥 2023. 3. 3. 11:50
728x90
반응형

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 상태에 진입한 직후 호출 된다

중요한 데이터를 저장하거나 점유하고 있는 공유 자원을 해제한다.

 

 

728x90
반응형