В iOS 13 Apple представила scene-based lifecycle для поддержки нескольких одновременных экземпляров UI одного приложения — в первую очередь для Split View multitasking на iPad.
UIApplicationDelegate обрабатывает общеприкладные события, которые не привязаны ни к одному конкретному экземпляру UI:
UISceneDelegate управляет lifecycle каждой отдельной scene, реагируя на UI-специфичные изменения состояния:
sceneWillEnterForeground(_:)
sceneDidBecomeActive(_:)
sceneWillResignActive(_:)
sceneDidEnterBackground(_:)
Каждая scene независимо переходит через эти состояния, что означает, что одна scene может быть активной, пока другая находится в фоне.
UIApplicationDelegate выступает в роли координатора на уровне приложения, конфигурируя общие ресурсы при запускеUISceneDelegate выступает в роли координатора на уровне окна, управляя тем, что пользователь видит в каждой sceneInfo.plist или возвращаются динамически через application(_:configurationForConnecting:options:)Это разделение позволяет разработчикам создавать приложения, которые корректно поддерживают несколько окон, обеспечивая более desktop-подобный опыт на iPad, при этом чисто разделяя ответственность между глобальным app state и отдельными экземплярами UI.
UISceneDelegate управляет приложением в целом, включая регистрацию push-уведомлений и обработку фонового обновления, в то время как UIApplicationDelegate обрабатывает изменения состояния UI для отдельных сцен.
Новый — ещё не проверен сообществом
Вы