rootViewController
обязательно инициализирован. Если это не так, то это было бы nil
, и приведение его с использованием as!
вызвало бы ошибку. Здесь, принижая, вы ничего не делаете с объектом VC. Вы просто говорите Swift: «Да, я уверен, что к моменту запуска кода это будет ItemsTableViewController
, так что не беспокойтесь об этом».
Как инициализируется VC?
Это связано с тем, как iOS управляет запуском приложения. Когда вы нажимаете на приложение, оно открывается и создается UIWindow
. Затем первый VC в вашей раскадровке инициализируется и устанавливается как rootViewController
из UIWindow
. После всего этого ваш делегат приложения вызывается.
Обратите внимание, что когда вы используете метод didFinishLaunching
, просто создается ВК. просмотров в ВК не загружены. Вот для чего viewDidLoad
.