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