OC中View生命周期

说到view的生命周期一般都是指视图控制器的view生命周期。

首先判断控制器是否有视图,如果没有就调用loadView方法创建。过程如下:红色虚线框可以忽略,一般不会用。

 OC中View生命周期

生命周期如下:

OC中View生命周期

1. loadView:

    视图控制器(UIViewController)及其子类,无论是手写代码还是storyboard、xib肯定会调用此方法(此方法的调用是懒加载的)。其它的视图不会调用比如UIButton,UILabel等,因为他们不是视图控制器。

  • Storyboard/XIB会调用的方法:

        initWithCoder

        awakeFromNib:此时frame还没有完成。

  • 手写代码调用的代码(必须是UIView比如自定义MDDButton : UIButton)

        initWithCoder

        - (instancetype)initWithFrame:(CGRect)frame.创建时init方法会默认调用此方法,不过frame为0.除非显示调用此方法,frame才会有值,比如:[[MDDButton alloc] initWithFrame:CGRectMake(10, 10, 100, 40)];这样显示的调用frame不为0。

2 -viewDidLoad

    加载到内存完成后会调用此函数,在视图切换中,只要控制器不从内存中移除此方法就不会被调用。一般在此方法中添加一些子控件,设置视图的初始属性等等,类似初始化。

3 -viewWillAppear

    即将加载到窗口时调用此方法。一般在此方法做一些较为耗时的。这样就可以先显示基本的视图,呈现给用户(让用户感觉不是那么卡),然后再显示比较耗时的。以免显示一个白屏给用户。

4 -viewDidAppear

    视图已经加载到窗口时调用。

以下:

viewWillDisappear-视图即将消失、被覆盖或是隐藏时调用;

viewDidDisappear-视图已经消失、被覆盖或是隐藏时调用;

viewVillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;

viewDidUnload-当内存过低,释放一些不需要的视图时调用。

你可能感兴趣的:(view)