iOS 懒加载

  • UI控件内部子控件多数是懒加载的

    • UIButton 内部的ImageView 和 Label
    • UITextField 内部的placeholderLabel 是懒加载的
  • 好处

    • 他是延迟加载, 重写getter方法, 用到时(即getter方法)才加载(如UIViewController 的view 没有在viewDidLoad 中加载 ,这时系统会在这段时间做其他事,提高利用率)
    • if 判断 :他并不是只加载一次, 在收到内存警告时, 系统会随机删除数据,if判断如果删掉了(==nil)就重新加载,没有就不加载
    • 不用关心他是在哪里创建的(初始化的)
    • 保证该对象只有一份
    • 保证该对象自始至终都有值
  • UIViewController 的view 懒加载 (UITabBarController的view不是懒加载)

    • 应为控制器的view是懒加载的,所以不能再模型属性setter方法里给控制的view的子控件赋值。一般在view加载完毕时,给控制器的view内部的子控件赋值。
    - (instancetype)view {
        if (_view == nil) {
        [self loadView];
        [self viewDidLoad];
        }
        return _view;
    }

  • 数组、模型数组懒加载

  • UI控件懒加载

    • 自定义控件中,子控件的初始化(创建、初始属性)
      • initWithFrame 方法中,代码自定义控件
      • awakFromNib 方法中,xib自定义控件
    • 控制器中, 在viewDidLoad中初始化子控件
    • 使用懒加载,用到时再加载,只有一份
  • UIBezierPath path只需要一个时, 一个path 可以画多条线

  • CAShaperLayer 形状层只需要一个时,不需要重复形状


未完待续

posted @ 2016-06-13 00:27  HOWIE-CH  阅读(252)  评论(0编辑  收藏  举报