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 形状层只需要一个时,不需要重复形状
未完待续