Сколько раз может быть вызван метод `loadView` у UIViewController?

«Сколько раз может быть вызван метод `loadView` у UIViewController?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод loadView вызывается системой один раз за время жизни контроллера при первом обращении к его свойству view. Однако он может быть вызван повторно, если система освободит вью из-за нехватки памяти.

Почему именно так? Система iOS управляет памятью и может выгрузить view контроллера, который не отображается на экране (например, находящийся в фоне). При возврате к такому контроллеру система пересоздаст его view, снова вызвав loadView.

Пример реализации:

class CustomViewController: UIViewController {
    override func loadView() {
        // Создаём кастомное view вместо стандартного
        let customView = UIView(frame: UIScreen.main.bounds)
        customView.backgroundColor = .systemBackground
        self.view = customView
        print("loadView вызван")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // При нехватке памяти система может nil'ить view и позже пересоздать её
    }
}

Ключевой момент: Не выполняйте в loadView работу, которая должна быть однократной (например, добавление сабвью-контроллеров). Для этого используйте viewDidLoad.