Назад к задачам
Junior — Senior
5

Определите порядок вызова методов жизненного цикла UIViewController

Компании, где спрашивали:

Вкусвилл АвтомаконВкусвилл Автомакон
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В примере ниже показан кастомный контроллер, наследующий UIViewController, в котором переопределены основные методы жизненного цикла, а также инициализаторы и деструктор. Нужно понять, в какой последовательности будут выводиться сообщения в консоль при создании экземпляра контроллера, его отображении на экране и последующем удалении.

import UIKit
import PlaygroundSupport

class SampleVC: UIViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("viewWillAppear")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        print("viewDidLoad")
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        print("init(nibName:bundle:)")
    }

    override func loadView() {
        super.loadView()
        print("loadView")
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("viewDidAppear")
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        print("init(coder:)")
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("viewWillDisappear")
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("viewDidDisappear")
    }

    deinit {
        print("deinit")
    }
}