Какой результат выведет программа №36

Ожидаемый вывод: false, затем true. Проверка isViewLoaded не загружает view, а обращение к свойству view запускает ленивую загрузку.

Короткий ответ

Что ответить на собеседовании

Ожидаемый вывод: 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее