加载控制器View的方式以及控制器View的生命周期

来源:互联网 发布:智慧课堂软件 编辑:程序博客网 时间:2024/05/17 05:03

加载控制器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加载
UIViewController

“`注意:如果你已经重写了loadView:方法,则系统会忽略查找对应名称的相关联的storyboard、xib文件。

#### 2.加载控制器view的生命周期(1)loadView:控制器创建时,先调这个方法来加载控制器的View,这个方法时用来自定义或者系统创建控制器的View的。(2)viewDidLoad:方法是用来对生成的视图进行一些初始化,并添加一些视图层次,或者根据本地或者网络返回的数据模型进行一些视图层次的初始化。(3)viewWillAppear:方法视图将要出现时会调用这个方法,可以进行一些初始化的改变(4)viewDidAppear:方法视图已经出现(5)viewWillDisAppear:方法视图将要消失(6)viewDidDisAppear:方法视图已经消失![哈哈](http://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被释放 ,两者并没有关系
“`