iOS生命周期注意事项

viewDidappear 更改xib内容app

 

1、 ARC环境
单个viewController的生命周期
initWithCoder:(NSCoder *)aDecoder:(若是使用storyboard或者xib)
loadView:加载view
viewDidLoad:view加载完毕
viewWillAppear:控制器的view将要显示
viewWillLayoutSubviews:控制器的view将要布局子控件
viewDidLayoutSubviews:控制器的view布局子控件完成
这期间系统可能会屡次调用viewWillLayoutSubviews 、    viewDidLayoutSubviews 俩个方法
viewDidAppear:控制器的view彻底显示
viewWillDisappear:控制器的view即将消失的时候
这期间系统也会调用viewWillLayoutSubviews 、viewDidLayoutSubviews 两个方法
viewDidDisappear:控制器的view彻底消失的时候
多个viewControllers跳转
当咱们点击push的时候首先会加载下一个界面而后才会调用界面的消失方法
initWithCoder:(NSCoder *)aDecoder:ViewController2 (若是用xib建立的状况下)
loadView:ViewController2
viewDidLoad:ViewController2
viewWillDisappear:ViewController1 将要消失
viewWillAppear:ViewController2 将要出现
viewWillLayoutSubviews ViewController2
viewDidLayoutSubviews ViewController2
viewWillLayoutSubviews:ViewController1
viewDidLayoutSubviews:ViewController1
viewDidDisappear:ViewController1 彻底消失
viewDidAppear:ViewController2 彻底出现
小结:
-整个控制器声明周期: viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear

2、非ARC环境下
didReceiveMemoryWarning:
当app收到内存警告的时候会发消息给视图控制器。
app历来不会直接调用这个方法,而是当系统肯定可用内存不足的时候采起调用。
若是你想覆写这个方法来释放一些控制器使用的额外内存,你应该在你的实现方法中调用父类的实现方法。
viewWillUnload:(iOS6废除)
当消除掉控制器的视图以前调用
视图不会再在低内存条件下被清除因此这个方法不会再被调用。
在iOS5以前,当低的内存状况发生的时候,当前控制器的视图们再也不被须要的时候,系统会有选择性的将这些视图从这些内存移除。这个方法被调用的目的是在视图被真正的销毁前你能够执行一些清空的任务。好比,你想要使用这个方法去清空视图的观察者或通知或者记录视图的状态以便当从新读取的时候恢复。
在iOS6以后,再也不须要清空视图的引用。所以,其余一些关于清理的方法,好比清空观察者,也不是必要的了。
viewDidUnload:(iOS6废除)
当视图从内存中被消除后调用
视图在地的内存状况下再也不被销毁因此这个方法也再也不会调用
在iOS5以前,地的内存情况发生以后,当前的试图控制器的视图再也不被须要,系统会选择性的在视图控制器的视图被销毁后调用。这个方法使你执行一些最后清空任务的最后机会若是你的视图控制器存储着对视图的或子控件的单独引用,你应该使用这个方法去释放这些引用。你也可使用这个方法去消除一些你再建立视图时候所建立的可是当视图再也不的时候再也不须要的关于对象的引用。你不该该使用这个方法去释放用户数据或者一些不能轻易被从新建立的数据。
在iOS6以后,清空在试图控制器中对views和其余对象的引用已经没有必要了。
当这个方法被调用的时候,视图的属性是空的。

文/Mitchell(简书做者)
原文连接:http://www.jianshu.com/p/fcfbd4919b0b
著做权归做者全部,转载请联系做者得到受权,并标注“简书做者”。
相关文章
相关标签/搜索