UIViewController的生命周期

来源:互联网 发布:威海淘宝培训学校在哪 编辑:程序博客网 时间:2024/06/05 05:30

视图控制器被创建,从屏幕上显示的时候,代码执行顺序如下

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

0 0
原创粉丝点击