В подходе до iOS 13 UIApplicationDelegate управляет всем жизненным циклом приложения через эти ключевые методы, вызываемые по порядку:
application(_:didFinishLaunchingWithOptions:) — приложение запустилось, выполни первоначальную настройкуapplicationDidBecomeActive — приложение находится на переднем плане и получает событияapplicationWillResignActive — приложение теряет фокус (например, входящий звонок)applicationDidEnterBackground — приложение полностью ушло в фон, сохрани состояние здесьapplicationWillEnterForeground — приложение возвращается из фонаapplicationWillTerminate — приложение вот-вот будет завершено, последний шанс для очисткиApple представила UISceneDelegate для поддержки нескольких окон, особенно на iPad. Ответственность за жизненный цикл теперь разделена:
UIApplicationDelegate обрабатывает события уровня приложения (запуск, удалённые уведомления)UISceneDelegate обрабатывает события уровня UI для каждой сцены/окнаКлючевые методы UISceneDelegate повторяют старый delegate:
scene(_:willConnectTo:options:) // заменяет didFinishLaunching для настройки UI
sceneDidBecomeActive(_:)
sceneWillResignActive(_:)
sceneDidEnterBackground(_:)
sceneWillEnterForeground(_:)
Info.plist или возвращается из application(_:configurationForConnecting:options:)Для новых проектов, нацеленных на iOS 13+, всегда применяй подход на основе Scene. Держи AppDelegate компактным — используй его только для настройки на уровне всего приложения, например регистрации push-уведомлений, а всю логику жизненного цикла UI делегируй в SceneDelegate.
В основанном на сценах жизненном цикле, введённом в iOS 13, каждый сценарий поддерживает собственное независимое состояние жизненного цикла, что позволяет нескольким сценариям одновременно находиться в разных состояниях на одном экземпляре приложения.
Новый — ещё не проверен сообществом
Вы