生命周期

作者: orilme | 来源:发表于2019-03-14 00:36 被阅读0次

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

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

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后调用,一般在这里添加子控件、初始化数据。
只有在视图控制器将其视图载入到内存之后才调用该方法,这是执行任何其他初始化操作的入口

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

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

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方法

相关文章

  • Vue生命周期

    什么是生命周期方法?生命周期钩子=生命周期函数=生命周期事件 Vue生命周期方法分类  创建期间的生命周期方法: ...

  • Activity,Fragment,Service生命周期图

    Activity生命周期 Fragment生命周期 Service生命周期

  • 10,vue生命周期

    生命周期钩子=生命周期函数=生命周期事件 根据生命周期的不同分为三类: 创建阶段的生命周期 运行阶段的生命周期 销...

  • 微信小程序生命周期的记录

    小程序中生命周期分为3类: 应⽤的生命周期 页面的生命周期 组件的生命周期 一、生命周期 1. 应⽤的生命周期[h...

  • Lifecycle 生命周期源码解析

    目录: 什么生命周期 什么是生命周期感知型组件 Activity是如何把生命周期传给生命周期感知组件的 生命周期 ...

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • uni-app微信小程序开发 - 生命周期

    uni-app的生命周期分为应用生命周期和页面生命周期还有组件生命周期。 应用生命周期[https://uniap...

  • 【小程序】生命周期

    小程序生命周期分为两类:应用生命周期和页面生命周期。 应用生命周期 应用生命周期包括onLaunch、onShow...

  • Java基础知识整理3——Android篇

    一、activity生命周期,fragment生命周期,broadcastReceiver生命周期,service...

  • Fragment的生命周期

    Fragment生命周期 宿主MainActivity生命周期 Fragmengs生命周期: activity_f...

网友评论

    本文标题:生命周期

    本文链接:https://www.haomeiwen.com/subject/vsymoftx.html