1、程序运行起来,通过main函数入口创建UIApplication,同时设置代理,创建完成application,想要显示View,需要添加UIWindow(特殊的View,存活于整个生命周期,确保添加的内容可以显示)。
2、设置window的根控制器,管理需要显示的View
3、View的创建
a. 如果重写loadView,就根据自定义的view创建view
b. 如果没有重写loadView,就去查看有没有storyboard,有storyboard,就根据storyboard里描述的view创建;
c. 如果没有storyboard,就去查看有没有指定的xib,有指定的xib,就根据xib里描述的view创建;
d. 如果没有指定的xib,即nibName为nil时,就查看有没有与xib的拥有者同名的xib,但优选查看没有Controller的xib,如果查不到,就查看有没有与xib的拥有者完全同名的xib,如:xib的拥有者是ViewController,xib的文件名是View,就优先查看View.xib,根据它描述的view创建;如果没有文件名为View的xib,就去查看有没有名字为ViewController的xib,如果有就根据xib里描述的view创建
e. 如果以上的情况都没有,就创建一个空的View
4、View的声明周期
loadView:第一次使用view的时候调用
viewDidLoad:控制器的view加载完成的时候调用
viewWillAppear:控制器的view即将显示的时候调用
viewDidAppear:控制器的view完全显示的时候调用
viewWillDisappear:控制器的view即将消失的时候调用
viewDidDisappear:控制器的view完全消失的时候调用
viewWillLayoutSubviews:控制器的view即将布局的时候调用
viewDidLayoutSubviews:控制器的view完全布局的时候调用
viewWillUnload:控制器的view即将销毁
viewDidUnload:控制器的view完全销毁
参考
https://www.cnblogs.com/oc-bowen/p/6061261.html