[iOS] AppDelegate

Eugenie·2022년 8월 29일
0

AppDelegate

AppDelegate.swift 는 크게 두 가지 기능을 한다.

🌀 AppDelegate 클래스 정의

애플리 케이션이 그려질 window 를 생성하고
상태가 변할 때 반응할 수 있게 한다.

AppDelegate 클래스는 UIApplicationDelegate 프로토콜을 채택해야한다.

🌀 앱에 대한 진입점과 입력 이벤트를 앱에 전달하는 실행 루프 생성

UIApplicationMain 의 특성으로
@UIApplicationMain 에 의해 수행된다.

~ iOS 12

└── AppDelegate
    └── Process Lifecycle
        └── App Launched
        └── App Terminated
	└── Process Lifecycle
        └── Entered Foregound
        └── Became active

하나의 앱에 하나의 window 가 존재했다.

iOS 13 ~

└── AppDelegate
    └── Process Lifecycle
	└── Session Lifecycle
        └── Session Created
        └── Session Discarded
└── SceneDelegate
    └── UI Lifecycle
        └── Entered Foreground
        └── Became active

AppDelegate 클래스에 있던 프로퍼티인 windowSceneDelegate 로 옮겨졌다.

AppDelegate 에서 더이상 UILifecycle 을 관리하지 않는다.

하나의 화면에서 여러개의 다중 화면을 지원하면서 scene 개념이 추가되었다.

window 개념이 scene 으로 대체되고 하나의 앱에 여러 scene 을 가질 수 있게 되었다.


AppDelegateSession Lifecycle 역할이 추가되었다.

Scene Session 이 생성되거나 삭제될 때
AppDelegate 에 알리는 메소드가 추가되었다.

Scene Session 은 앱에서 생성한 모든 scene 의 정보를 관리한다.

scene

UIKitUIWindowScene 객체를 사용하는 UI 의 인스턴스를 관리한다.

Scene 에는 하나의 UI 인스턴스를 나타내는 windowview controllers 가 들어있다.
Scene 들은 같은 메모리와 앱 프로세스 공간을 공유하며 서로 동시에 실행된다.

Scene Session

scene 고유의 런타임 인스턴스를 관리한다.

사용자가 앱에 새로운 scene 을 추가하거나 scene 을 요청하면
시스템은 scene 을 추적하는 session 객체를 생성한다.

해당 session 에 고유 식별자와 scene 의 구성 세부사항이 들어있다.


📚 Reference
[IOS] AppDelegate는 뭐하는 녀석이지?
[iOS] iOS13이후의 AppDelegate와 SceneDelegate

profile
🌱 iOS developer

0개의 댓글