AppDelegateAppDelegate.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 클래스에 있던 프로퍼티인 window 가 SceneDelegate 로 옮겨졌다.
AppDelegate 에서 더이상 UILifecycle 을 관리하지 않는다.
하나의 화면에서 여러개의 다중 화면을 지원하면서 scene 개념이 추가되었다.
window 개념이 scene 으로 대체되고 하나의 앱에 여러 scene 을 가질 수 있게 되었다.
AppDelegate 에 Session Lifecycle 역할이 추가되었다.
Scene Session 이 생성되거나 삭제될 때
AppDelegate 에 알리는 메소드가 추가되었다.
Scene Session 은 앱에서 생성한 모든 scene 의 정보를 관리한다.
sceneUIKit 은 UIWindowScene 객체를 사용하는 UI 의 인스턴스를 관리한다.
Scene 에는 하나의 UI 인스턴스를 나타내는 window 와 view controllers 가 들어있다.
Scene 들은 같은 메모리와 앱 프로세스 공간을 공유하며 서로 동시에 실행된다.
Scene Sessionscene 고유의 런타임 인스턴스를 관리한다.
사용자가 앱에 새로운 scene 을 추가하거나 scene 을 요청하면
시스템은 scene 을 추적하는 session 객체를 생성한다.
해당 session 에 고유 식별자와 scene 의 구성 세부사항이 들어있다.
📚 Reference
[IOS] AppDelegate는 뭐하는 녀석이지?
[iOS] iOS13이후의 AppDelegate와 SceneDelegate