Что такое протокол UIApplicationDelegate в iOS?

«Что такое протокол UIApplicationDelegate в iOS?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

UIApplicationDelegate — это протокол в UIKit, определяющий методы для обработки событий жизненного цикла приложения. Объект, его реализующий (обычно AppDelegate), является центральной точкой входа для системных уведомлений.

Ключевые методы:

  • application(_:didFinishLaunchingWithOptions:) — Вызывается после загрузки приложения. Место для начальной настройки.
  • applicationDidBecomeActive(_:) — Приложение перешло на передний план и активно для пользователя.
  • applicationWillResignActive(_:) — Приложение скоро перестанет быть активным (например, при входящем звонке).
  • applicationDidEnterBackground(_:) — Приложение перешло в фоновый режим. Нужно освобождать ресурсы и сохранять состояние.
  • applicationWillTerminate(_:) — Приложение будет завершено системой.

Пример реализации:

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Настройка Firebase, аналитики, роутинга
        print("Приложение запущено")
        return true
    }
}

Важно: С iOS 13 и появлением сцен (Scenes) часть ответственности делегата приложения перешла к SceneDelegate для поддержки многозадачности на iPad и нескольких окон.