ViewController的生命周期

为了方便自己以后查找 所以才转载

原地址:http://blog.163.com/daisy_20100129/blog/static/20140225620121118104522986/

接触ios开发已经两周了,按照公司给我安排新手学习任务一步一步接触。对于objective-ciphone开发有了初步的认识和了解。

今天小领导在检查我提交的demo时提出了一个建议,建议我在viewController里面的dealloc函数中对属性和成员变量进行release。我很纳闷,为什么我已经在viewDidUnLoad中对这些成员和属性进行释放并置空了,此处还要进行release。这样不会导致成员变量的引用计数值为负数吗?小领导说这涉及到viewController的生命周期,因为有可能viewController根本就不会进入viewDidLoad中,那么也就不会调用viewDidUnLoad。如果日后有代码复用时可能就会出现问题。一知半解的感觉,于是查看appleAPI,好好认识了一下时时刻刻都在打交道的viewController。

 

首先我们来了解一下什么是viewController。viewController叫做视图控制器。对内是用于管理视图,对外则是与其他的viewcontroller进行通信。它继承于NSObject。它分为两种类型,一种叫contentViewController,内容视图控制器,主要用于体现内容,如UITableView UIViewController这种直接显示内容的;还有一种叫做containerViewController,容器视图类。典型的就是tabBar,navigation.它还包含好几个其它的viewController.


每个view都有一个viewController。且view的生命周期也在viewController里面。所以在view释放之前,viewcontroller是不可以释放的。那viewController的生命周期到底是怎么样的呢?和我一步一步来看吧。


step1:initWithNib    viewController 会进行alloc,并init.

step2: loadView       在这里会看它的子类是否有重写这个函数,如果重写了则调用子类的,否则就调用她自己的。注意,这个时                       候视图还是没有没加载进来的哦。

step3:viewDidLoad    这个时候视图已经存在了。可以在这里添加你想要添加的UI控件了。

step4:viewWillAppear 视图将出现在屏幕上了

step5:viewDidAppear   视图已经成功在屏幕上渲染完成了

step6:viewWillDisappear  视图将要消失了

step7:viewDidDisappear  视图从屏幕上消失了

step8:viewDidUnLoad     当发生内存警告的时候,如果本视图不是当前正在显示的视图,则会执行这个函数。将子视图释放。

step9:dealloc          释放viewController

而view的生命周期则是step3_step8.


viewController在IOS开发中很重要,因为任何视图的操作都会涉及到它。我的理解暂时也还挺浅,希望在日后的学习中,不断加深对他的认识。也会不断在博客上分享自己的收获。


你可能感兴趣的:(iOS移动开发)