码迷,mamicode.com
首页 > 其他好文 > 详细

控制器的生命周期

时间:2015-11-27 21:36:11      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

1>  概念:控制器的view的生命周期方法都是以view开头的。

 

2>  控制器view的加载

技术分享

        当控制器要加载一个view时,首先判断是否已有view,如果有,则直接return;如果没有,则调用loadView方法(参考下面第3点);

 

3>  控制器的view的创建(调用loadView方法时)

技术分享

        当创建view的时候,首先看我们有没有自定义loadView,如果重写了loadView方法,就根据loadView的代码实现去创建,如果没有自定义loadView,就看有没有storyboard文件;

        如果有storyboard,那么就根据storyboard的描述去创建,如果没有storyboard,就看有没有跟代码中输入的nibName同名的xib文件;

        如果有找到nibName代码输入的xib文件,就根据nibName对应的xib的描述去创建,如果没有找到nibName中的xib文件,就看有没有跟控制器类名同名且不带controllerview.xib文件;

        如果有跟控制器类名同名且不带controllerview.xib文件,就根据view.xib的描述去创建,如果没有,就看有没有跟控制器类名同名的viewController.xib文件;

        如果有跟控制器类名同名的viewController.xib文件,就根据viewController.xib的描述去创建,如果没有,就创建一个空的view

注意点:

  • 控制器的view是延迟加载的:用到时再加载
  • 可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载
  • 控制器的view加载完毕就会调用viewDidLoad方法
  • 当通过代码方式去创建view时,在loadView方法中不应该调用super,如果调用[super  loadView]会影响性能;使用创建的viewself.view进行赋值

 

4>  内存警告处理

技术分享

        当系统发出内存警告时,会调用didReceiveMemoryWarning方法,如果当前有能被释放的view,系统会调用viewWillUnload方法来释放view,完成后调用viewDidUnload方法,完成viewrelease

 

5>  生命周期执行流程:

Init -> loadView -> viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> viewWillUnload -> viewDidUnload -> dealloc

注:在非ARCviewDidUnload,经常用来清空界面上的数据

 

6>  小结

loadViewviewDidLoad的区别:

        loadView 方法在控制器的 view 为 nil 的时候被调用。 此方法用于以编程的方式创建 view 的时候用到。loadView 是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。loadView只会被调用一次。

        viewDidLoad 方法只有当 view 从 nib 文件初始化的时候才被调用。 viewDidLoad 用于初始化,加载时用到。viewDidLoad可能会被调用多次。

 

 

控制器的生命周期

标签:

原文地址:http://www.cnblogs.com/sjxjjx/p/5001626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!