我们在Xcode写完代码,运行程序后,代码执行的顺序:
1.运行程序;
2.进入main函数;
3.执行UIApplicationMain方法;
4.创建UIApplication对象并设置代理,开启消息循环(开启Runloop事件监听UIApplication的几个代理方法);
5.程序结束。
但是中间具体发生了什么呢?
首先在应用程序加载完毕之后,加载一个UIWindow对象,同时把UIViewController设置为UIWindow的RootViewController,然后设置这个UIWindow为主窗口并可见,当主窗口设置为可见的过程中会调用UIViewController的loadView方法来加载视图(注意:UIViewController的loadView方法是延时加载的,第一次调用UIViewController的view属性才会调用此方法,由于makekeyandvisible方法中会使用UIViewController的view属性,所以此时会调用UIViewController的LoadView方法),view加载完成之后,调用ViewDidLoad方法,在这个方法中添加相关的UI控件加载到UIViewController的view中。
当我们使用main.storyboard时,并没有创建UIWindow,这时又是如何加载的呢?其实当程序运行到上面第四步之后,就会加载info.plist判断有没有指定main.storyboard,指定了就加载。
加载main.storyboard做的事情:
1.创建UIWindow对象;
2.加载main.storyboard,并加载main.storyboard指定的UIViewController;
3.把新创建的UIViewController作为UIWindow对象的rootViewController,让窗口显示出来。