> Какой жизненный цикл у UIViewController и в каком порядке вызываются методы (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: VK, Физтех-Центр, Bip.ru, Doubletapp, Битрикс24, Совкомбанк, Яндекс

Стек: iOS, Swift

> Пример ответа

Жизненный цикл UIViewController состоит из последовательности вызовов методов, которые управляют его появлением и исчезновением на экране. Основной порядок вызова при стандартном переходе (present/push) выглядит так:

  1. loadView() - создаётся иерархия view (если не задана в storyboard/xib).

  2. viewDidLoad() - view загружена в память, но ещё не отображена. Здесь обычно настраивают UI, подписываются на уведомления.

  3. viewWillAppear(_:) - view скоро появится на экране (анимация ещё не началась). Подходит для обновления данных, скрытия/показа элементов.

  4. viewDidAppear(_:) - view уже отображена. Запуск анимаций, начало асинхронных задач.

  5. viewWillDisappear(_:) - view скоро исчезнет с экрана. Сохранение состояния, отписка от уведомлений.

  6. viewDidDisappear(_:) - view уже исчезла. Остановка фоновых задач, очистка ресурсов.

При уничтожении контроллера вызывается deinit (не метод жизненного цикла view, но важный для освобождения памяти).

Также существуют методы, связанные с изменением геометрии: viewWillLayoutSubviews(), viewDidLayoutSubviews() - вызываются после изменения размеров view (например, при повороте устройства). Они идут после viewWillAppear, но до viewDidAppear.

Важно: viewDidLoad вызывается только один раз за время жизни контроллера, а viewWillAppear/viewDidAppear - каждый раз при появлении.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью