Ожидаемый вывод: false, затем true. Проверка isViewLoaded не загружает view, а обращение к свойству view запускает ленивую загрузку.
Какой результат выведет программа №36
Ожидаемый вывод: false, затем true. Проверка isViewLoaded не загружает view, а обращение к свойству view запускает ленивую загрузку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Вопрос: какое значение будет напечатано при выполнении следующего Swift‑кода?
import UIKit
let viewController = UIViewController(nibName: nil, bundle: nil)
print(viewController.isViewLoaded)
print(viewController.view != nil)
Ответ
Ожидаемый вывод: false, затем true. Проверка isViewLoaded не загружает view, а обращение к свойству view запускает ленивую загрузку.
Обычный UIViewController создаётся без немедленного построения представления. Поэтому первое чтение isViewLoaded возвращает false. При втором выражении getter view обеспечивает создание корневого UIView через механизм загрузки, и проверка на nil даёт true. Если снова вывести isViewLoaded после этого обращения, получится true. Для проверки без побочного эффекта используют isViewLoaded или viewIfLoaded, а не доступ к view.