> Какой жизненный цикл у UIViewController и в каком порядке вызываются методы (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: VK, Физтех-Центр, Bip.ru, Doubletapp, Битрикс24, Совкомбанк, Яндекс
Стек: iOS, Swift
> Пример ответа
Жизненный цикл UIViewController состоит из последовательности вызовов методов, которые управляют его появлением и исчезновением на экране. Основной порядок вызова при стандартном переходе (present/push) выглядит так:
-
loadView()- создаётся иерархия view (если не задана в storyboard/xib). -
viewDidLoad()- view загружена в память, но ещё не отображена. Здесь обычно настраивают UI, подписываются на уведомления. -
viewWillAppear(_:)- view скоро появится на экране (анимация ещё не началась). Подходит для обновления данных, скрытия/показа элементов. -
viewDidAppear(_:)- view уже отображена. Запуск анимаций, начало асинхронных задач. -
viewWillDisappear(_:)- view скоро исчезнет с экрана. Сохранение состояния, отписка от уведомлений. -
viewDidDisappear(_:)- view уже исчезла. Остановка фоновых задач, очистка ресурсов.
При уничтожении контроллера вызывается deinit (не метод жизненного цикла view, но важный для освобождения памяти).
Также существуют методы, связанные с изменением геометрии: viewWillLayoutSubviews(), viewDidLayoutSubviews() - вызываются после изменения размеров view (например, при повороте устройства). Они идут после viewWillAppear, но до viewDidAppear.
Важно: viewDidLoad вызывается только один раз за время жизни контроллера, а viewWillAppear/viewDidAppear - каждый раз при появлении.
> Похожие задачи по mobile
Какие паттерны проектирования вы знаете и использовали в работе
Что такое MVVM и в чем отличие от MVC
В чем разница между weak и unowned ссылками в Swift и когда их использовать
Ты сейчас в активном поиске работы
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью