Каковы ключевые этапы запуска iOS-приложения?

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

Ответ

Запуск iOS-приложения — это последовательный процесс, управляемый системой:

  1. Загрузка бинарника – Система загружает исполняемый файл приложения и связанные динамические библиотеки (dylibs).
  2. Инициализация Runtime – Загружается и настраивается Objective-C/Swift runtime (регистрация классов, категорий, констант).
  3. Точка входа main() – Вызывается стандартная C-функция main, которая запускает UIApplicationMain.
    UIApplicationMain(
        argc,
        argv,
        nil, // principalClassName (обычно nil для стандартного UIApplication)
        NSStringFromClass(AppDelegate.self) // delegateClassName
    )
  4. Создание UIApplication – Система создает единственный экземпляр UIApplication (или его подкласса).
  5. Загрузка интерфейса – Если в Info.plist указан Main storyboard file base name, система загружает его и создает initial view controller.
  6. Жизненный цикл AppDelegate – Вызывается ключевой метод делегата:
    application(_:didFinishLaunchingWithOptions:) -> Bool
  7. Запуск Run Loop – Приложение переходит в активное состояние (applicationDidBecomeActive(_:)), и главный поток начинает обрабатывать события в run loop.