UIViewController的生命周期
2015-11-20 16:56
267 查看
视图控制器被创建,从屏幕上显示的时候,代码执行顺序如下
1.alloc :创建这个控制器对象,并分配空间
2. init (initWithNibName)初始化对象,初始化数据
3. LoadView :载入nib的视图
4. viewDidLoad : 载入完成,可以在这里用代码动态编写其他控件,只会在加载的时候执行一次,所以只能用来做初始化设置
5. viewWillAppear : 视图将要出现在屏幕之前,马上这个视图就会展现在屏幕上的时候,一般可以在这里设置设备在不同方向的时候该如何显示等等.
6. viewDidAppear 视图已经在屏幕上渲染完成的时机.有时候,由于一些特殊的原因,我们不能在viewWillApper方法里,对视图进行更新。那么可以重写这个方法,在这里对正在显示的视图进行进一步的设置。
视图从屏幕中移除,并销毁内存的时候的执行顺序正好相反:
1. viewWiiDisappear: 视图将要从屏幕上移除的时候执行,(因为是移除,和nib已经没有关系,所以这里没有所谓的load)
2. viewDidDisappear:视图已经从屏幕上移除,可以重写这个方法,在视图已经消失或者被覆盖后执行一些操作.
3. 视图被销毁,这里需要对你在init和viewDidLoad中创建的对象进行释放,ARC不用处理
关于didReceiveMemoryWarining 和viewDidUnload:
3.0以后已经不怎么使用didReceiveMemoryWarining,但是好像6.0又开始用,只是方式不太相同.如果发生内存警告的时候, 本视图不是正在显示的视图的话,这个方法就会被执行,销毁本视图的所有子视图,我个人理解:不如当前显示了个很多层的view,有内存警告了,然后系统会自动的销毁没有显示的子控件,系统在这里只会释放内存,不会释放对象的所有权,个人理解为变成了野指针,所以这里需要开发者手动的对viewload和viewDidLoad里的对象进行释放.也就是把指针置为nil
相关文章推荐
- UniGui中使用Grid++Report报表控件子报表获取数据的方法
- easyui常用控件常用方法
- MyBatis+Gson+Jersey+EasyUI的增删改例子
- Codeforces Beta Round #85 (Div. 1 Only) A. Petya and Inequiations 贪心
- cannot access storage file (as uid:107, gid:107)permission denied
- AD 域控查询命令 dsquery
- UIView的生命周期
- iOS经典讲解之UIImage初始化一张图片的方法及优缺点
- GPUImage简单滤镜使用(一)
- UITextView在光标处插入字符串
- iOS- 添加UIWindow蒙版
- 关于UGUI的EventSystem的学习
- 那些年,我们一起追的面试题。。to be continued!!!
- UIToolBar
- UITextView的动态适应高度处理
- 如何做一个网站 (C# + MVC Web+ easyUI )
- response.setContentType与 request.setCharacterEncoding 区别
- Size Classes与Interface Builder与Imag Asset与Autolayout
- 往resin 服务器中发送post 报 POST requires content-length
- UUID 和 GUID 的区别