iOS13버전 이후, AppDelegate
의 역할은 SceneDelegate
로 몇 가지 이전되면서, AppDelegate
에 Session LifeCycle
에 대한 역할이 추가되었다
Scene Session
이 생성되거나 삭제될 때 AppDelegate
에 알리는 두 메소드가 추가됐는데,
Scene Session은 앱에서 생성한 모든 scene의 정보를 관리한다
UISceneSession
객체는scene
의 공유의 런타임 인스턴스를 관리합니다. 사용자가 앱에 새로운scene
을 추가하거나 프로그래밍적으로scene
을 요청하면, 시스템은 그scene
을 추적하는session
객체를 생성합니다. 그session
에는 고유한 식별자와scene
의구성 세부사항(configuration details)
가 들어있습니다. UIKit는session
정보를 그 scene 자체의 생애(life time)동안 유지하고 app switcher에서 사용자가 그 scene을 클로징하는 것에 대응하여 그 session을 파괴합니다.session 객체는 직접 생성하지 않고 UIKit가 앱의 사용자 인터페이스에 대응하여 생성합니다. 또한 AppDelegate에서 사용하는 두 메서드를 통해서 UIKit에 새로운 scene과 session을 프로그래밍적 방식으로 생성할 수 있습니다
(UISceneSession - Apple Developer Document 참고)
application (_ : configurationForConnecting : options :)
//scene을 만들 때 구성 객체를 반환해야 합니다.
application (_ : didDiscardSceneSessions :)
//사용자가 app switcher를 통해 scene을 닫을 때 호출됩니다.