控制器View的加载 && 创建

控制器View的加载 && 创建

loadView

- (void)loadView{
    // 系统默认的做法,
    [super loadView]
}
  • 自定义控制器的view的时候重写这个方法
  • 第一次使用控制器的view的时候调用
  • 在这个方法中如果没有自定义view,就不能获取控制器的view(self.view),不然会死循环
  • 第一次用到控制器的view的时候(self.view),系统会这样调用getter方法
- (UIView *)view{
    if(_view == nil){
        [self loadView];
        [self viewDidLoad];
    }
    return _view;
}
  • 一旦重写的了这个方法,就不要调用 [super loadView], 因为[super loadView]是系统默认的做法
  • 如果重写了这个方法,就不会去加载storyboardxib描述的控制器的View

控制器View的创建

这里写图片描述
- 过程
- 如果我们自定义loadView方法的话,会根据我们的自定义的代码去创建view,如果没有的话
- 看看有没有storyboard,如果有的话,根据storyboard的描述去创建view,如果没有的话
- 看看有没有通过initWithNibName:bundle:初始化控制器,如果nibName不为nil的话,根据nibName对应xib的描述去创建,如果nibNamenil的话
- 寻找有没有跟控制器类名同名但是不带Controllerxib,如果有的话就会去加载,如果没有的话
- 寻找有没有跟控制器类名同名的xib,如果有就会去加载,如果没有的话
- 创建空的view
- 注意
- 通过alloc init 创建控制器,如果这个控制器的viewstoryboardxib描述的话,这样创建会自动从storyboardxib加载控制器的View,其他非控制器控件 alloc init创建不会自动加载xib
- 因为控制器的init方法底层会调用initWithNibName:bundle:
- 如果通过xib加载控制器的view ,在控制器viewDidLoad方法中拿到的viewsize是不准确的
- 如果通过storyboard加载控制器的view,在控制器viewDidLoad方法中拿到的viewsize是准确的(有待验证)

控制器的view懒加载

  • 第一次使用的时候才会去加载,并不是创建控制器的时候去加载
  • 如果控制器是窗口的根控制器,就可以不用设置控制器view的尺寸
    这里写图片描述

内存警告处理

这里写图片描述

生命周期方法

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值