init
—> loadView
—> viewDidLoad
—>viewWillAppear
—> viewWillLayoutSubviews
—> viewDidLayoutSubviews
—>viewDidAppear
—> viewWillDisappear
—> viewDidDisappear
bash
init
—> loadView
—> viewDidLoad
—>viewWillAppear
—> viewWillLayoutSubviews
—> viewDidLayoutSubviews
—>viewDidAppear
—> viewWillDisappear
—> viewDidDisappear
—>接收到内存警告
—>viewWillUnload
—> viewDidUnload
app
应该只有相关数据的初始化,并且这些数据是比较关键的数据。 init方法中实例化必要的对象(听从LazyLoad思想)布局
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];
}
复制代码
当控制器的view建立完毕时会调用(视图控制器自带的视图建立完就会自动调用这个方法),也就是在loadView后调用,通常在这里添加子控件、初始化数据。 只有在视图控制器将其视图载入到内存以后才调用该方法,这是执行任何其余初始化操做的入口spa
当试图将要添加到窗口中而且还不可见的时候或者上层视图移出图层后本视图变成顶级视图时调用该方法。通常在View被添加到superView以前,切换动画以前调用。在这里进行一些显示前的处理。好比键盘弹出、一些特殊的动画(好比状态条和navbar的颜色)、改变视图方向等的操做。code
通常用于显示前,对子控件进行布局。对象
子控件布局完成,能够在这里对子控件进行一些初始化。内存
当视图添加到窗口中之后或者上层视图移出图层后本视图变成顶级视图时调用,用于放置那些须要在视图显示后执行的代码。资源
当应用程序接收到系统的内容警告时,就有可能调用控制器的didReceiveMemoryWarning方法。 它的默认作法是:当控制器的view不在窗口上显示时,就会直接销毁,而且调用viewDidUnload方法it