iOS ViewController生命周期

init—> loadView—> viewDidLoad—>viewWillAppear—> viewWillLayoutSubviews—> viewDidLayoutSubviews—>viewDidAppear—> viewWillDisappear—> viewDidDisappearbash

init—> loadView—> viewDidLoad—>viewWillAppear—> viewWillLayoutSubviews—> viewDidLayoutSubviews—>viewDidAppear—> viewWillDisappear—> viewDidDisappear—>接收到内存警告—>viewWillUnload—> viewDidUnloadapp

1. init(init 法中初始化ViewController自己)

应该只有相关数据的初始化,并且这些数据是比较关键的数据。 init方法中实例化必要的对象(听从LazyLoad思想)布局

2. loadView(controller的view为nil时调用,初始化view)

view 控制器默认会注册memory warning notification。 当第一次使用控制器的view时,会调用loadView方法建立view,通常在这里自定义view(如手动建立本身的视图,那么应该覆盖这个方法并将它们赋值给试图控制器的 view 属性); 视图控制器自带的视图并非视图控制器一建立就立刻建立的,而是被访问时才建立即自动调用loadView,这个方法返回时视图就建立好了动画

- (void)loadView{
    //self.view.backgroundColor = [UIColor greenColor];//这时候view还没建立,程序会崩
    [super loadView];
    //loadView返回以后,view建立好了
    self.view.backgroundColor = [UIColor greenColor];
}
复制代码
3. viewDidLoad(view 从nib文件初始化)

当控制器的view建立完毕时会调用(视图控制器自带的视图建立完就会自动调用这个方法),也就是在loadView后调用,通常在这里添加子控件、初始化数据。 只有在视图控制器将其视图载入到内存以后才调用该方法,这是执行任何其余初始化操做的入口spa

4. viewWillAppear(页面即将被显示)

当试图将要添加到窗口中而且还不可见的时候或者上层视图移出图层后本视图变成顶级视图时调用该方法。通常在View被添加到superView以前,切换动画以前调用。在这里进行一些显示前的处理。好比键盘弹出、一些特殊的动画(好比状态条和navbar的颜色)、改变视图方向等的操做。code

5. viewWillLayoutSubviews(将要布局控制器View的子控件时调用)

通常用于显示前,对子控件进行布局。对象

6. viewDidLayoutSubviews(布局控制器View的子控件完成时调用)

子控件布局完成,能够在这里对子控件进行一些初始化。内存

7. viewDidAppear(已经出现)

当视图添加到窗口中之后或者上层视图移出图层后本视图变成顶级视图时调用,用于放置那些须要在视图显示后执行的代码。资源

8. viewWillDisappear(即将消失)
9. viewDidDisappear(已经消失)
10. viewWillUnload
11. viewDidUnload(当控制器的view由于内存警告被销毁时调用)
  • 在这里应该将那些再也不显示的View释放掉。
  • 当viewcontroller的任何view 没有用的时候,viewDidUnload会被调用,在这里实现将retain 的view release,若是是retain的IBOutlet view 属性则不要在这里release,IBOutlet会负责release
  • 通常在这里回收跟界面相关的资源(界面都会销毁了,跟界面相关的资源确定不要了)
  • 当视图控制器从内存释放本身的方法的时候调用,用于清除那些可能已经在试图控制器中建立的对象
12. dealloc(页面销毁)
13. didReceiveMemoryWarning

当应用程序接收到系统的内容警告时,就有可能调用控制器的didReceiveMemoryWarning方法。 它的默认作法是:当控制器的view不在窗口上显示时,就会直接销毁,而且调用viewDidUnload方法it

相关文章
相关标签/搜索