加载控制器View的方式以及控制器View的生命周期
1.加载控制器的方式
(1)如果创建时通过指定名称加载与控制器相关联的xib文件,则直接加载
UIViewController *vc = [[UIViewController alloc]initWithNibName:”controller” bundle:nil];
(2)如果没有指定加载某个xib文件,则查找与此控制器类名称相同的xib文件加载,假如此控制器叫theViewController,则它就去找名字”theViewController”的xib文件去加载
UIViewController *vc = [[UIViewController alloc]init];
(3)如果没有xib文件中没有叫这个控制器名称的,则去加载去掉这个控制器名称的Controller字眼剩下前缀的xib文件,比如UIViewController,则去加载UIView.xib 文件
(4)如果不通过sb和xib去加载,则系统会去自动调用loadView创建一个空白View ,这个view的颜色被clear了所以看见window的颜色是黑色的
(5)如果你重写了loadView 则 不管你有没有sb和xib文件,都没关系,反正它都忽略了 都会去loadView加载
“`注意:如果你已经重写了loadView:方法,则系统会忽略查找对应名称的相关联的storyboard、xib文件。
#### 2.加载控制器view的生命周期
(1)loadView:
控制器创建时,先调这个方法来加载控制器的View,这个方法时用来自定义或者系统创建控制器的View的。
(2)viewDidLoad:方法
是用来对生成的视图进行一些初始化,并添加一些视图层次,或者根据本地或者网络返回的数据模型进行一些视图层次的初始化。
(3)viewWillAppear:方法
视图将要出现时会调用这个方法,可以进行一些初始化的改变
(4)viewDidAppear:方法
视图已经出现
(5)viewWillDisAppear:方法
视图将要消失
(6)viewDidDisAppear:方法
视图已经消失
![哈哈](https://img-blog.csdn.net/20170614153745769?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWlhb3BmMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
```注意:当视图从屏幕上消失再出现时,如果视图没有因为内存警告而做出一些nil操作,则不会去loadView方法 也不会走viewDidLoad```
(7)viewUnload方法
这个方法就是当因为手机内存不足时,控制器会收到内存警告消息didReceiveMemoryWarning。didReceiveMemoryWarning这个方法的默认实现,就是当viewController的View不在应用程序的视图层级结构中时,就会讲view释放并且调用viewDidUnload方法。而这个方法主要用来释放界面视图的相关资源,讲相关实例设置nil。
<div class="se-preview-section-delimiter"></div>
注意:和dealloc方法不同:dealloc方法是控制器被释放时被调用,而viewDidUnload方法只是View被释放 ,两者并没有关系
“`