iOS开发基础-视图生命周期

从创建一个视图,到视图消失或者被遮挡的时候,方法的调用:

1、 alloc                                  

 创建对象,分配空间


2、init (initWithNibName)        

初始化对象,初始化数据


3、loadView         

self.view = nil;的时候会调用这个方法

注意:loadView仅仅应该在开发者希望自行通过编码而不是Interface Builder定制view的时候被实现,而且不应该在其中调用[super loadView],你的loadView中应该有self.view = …这样的行为。


4、viewDidLoad                  

载入完成,可以进行自定义数据以及动态创建其他控件

注意:在视图间切换的时候不会调用这个方法,这个时候如果要对视图进行数据更新,请使用viewWillAppear


5、viewWillAppear              

视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了


6、viewDidAppear              

 视图已在屏幕上渲染完成


7、viewWillDisappear            

视图将被从屏幕上移除之前执行


8、viewDidDisappear            

 视图已经被从屏幕上移除,用户看不到这个视图了


9、dealloc                                

视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放


10、viewDidUnload

该方法在收到内存警告,同时该视图并不在当前界面显示时候会被调用,此时该 controller 的 view 已经被释放并赋值为 nil。

接下来你要做的是

把实例变量的子视图释放(IBOulet 的,以及自己添加的)

其他实例变量,比如之前在 -viewDidLoad 中实例的数据数组、http 请求释放掉

因为当该 viewController 再次被激活准备显示时(比如 navigationControler 返回到上一级),vc 发现自己的 view 为空后会重复之前的流程直到把 view 给创建起来。如果没把自己额外添加的子视图,各种类实例变量释放,然后又重新创建,于是,内存泄露了。

你可能感兴趣的:(iOS开发基础-视图生命周期)