UIViewController生命周期方法init、viewDidLoad、viewWillAppear和viewDidAppear
方法执行顺序为:init -> viewDidLoad -> viewWillAppear -> viewDidAppear
viewDidLoad是当程序第一次加载view时调用,以后都不会用到,而viewDidAppear是每当切换到view时就调用。
viewDidLoad
Called after the view has been loaded. For view controllers created in code, this is after -loadView. For view controllers unarchived from a nib, this is after the view is set.
在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。
viewWillAppear
Called when the view is about to made visible. Default does nothing
视图即将可见时调用。默认情况下不执行任何操作
更新准备显示的视图的信息。调用时,视图可能还没有被加载。
viewDidAppear
Called when the view has been fully transitioned onto the screen. Default does nothing
视图已完全过渡到屏幕上时调用
来触发视图完全显示在屏幕上之后的行为,例如任何动画。
备注:
(1)按下Home键之后不会调用viewWillDisappear和viewDidDisappear
因为在ios4后引入了后台的概念,当按下Home键之后,程序被挂起了,但是该View依然是原来的View,并不是新的。所以只有内存不够的时候或程序被终止的时候,才会调用viewWillDisappear和viewDidDisappear。
视图控制对象通过alloc和init来创建,但是视图控制对象不会在创建的那一刻就马上创建相应的视图,而是等到需要使用的时候才通过调用loadView来创建,这样的做法能提高内存的使用率。比如,当某个标签有很多UIViewController对象,那么对于任何一个UIViewController对象的视图,只有相应的标签被选中时才会被创建出来。
init-初始化程序
viewDidLoad-加载视图
viewWillAppear-UIViewController对象的视图即将加入窗口时调用;
viewDidApper-UIViewController对象的视图已经加入到窗口时调用;
viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;
viewDidDisappear-UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;
viewVillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;
viewDidUnload-当内存过低,释放一些不需要的视图时调用。