懒加载
首先,要明白懒加载的概念,懒加载的实质就是延迟加载,iOS设备在加载时有限度,如果我们的数据很大,一次性将其全部加载出来可能对内存的损耗比较大,懒加载的作用就是将其在需要的时候再加载出来。
- 懒加载的实质就是重写getter方法
如果我们在UI视图中添加一个新的label,要怎么做,按原本的作法:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
_label = [[UILabel alloc] init];
_label.text = @"iOS";
_label.frame = CGRectMake(100, 100, 100, 100);
[self.view addSubview:_label];
}
在该视图的viewDidLoad方法里直接将其实现即可。
如果利用懒加载的话,就要在视图的.m文件里进行重写方法:
- (UILabel *)Label {
if (!_label) {
_label = [[UILabel alloc] init];
_label.text = @"iOS";
_label.frame = CGRectMake(100, 100, 100, 100);
[self.view addSubview:_label];
}
return _label;
}
在viewDidLoad里进行调用:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self Label];
}
注意:
在懒加载的方法重写过程中_label不要写成self.label,在重写之前,两者所调用的对象是相同的,但是在重写之后,self.label返回的是懒加载初始化之后的对象,_label返回的是初始化之前的对象。
懒加载的优点:
- 懒加载节省内存资源,只有在需要用加载它时,才会进行调用懒加载
- 懒加载可以防止实例为nil,在重写的过程中首先会盘空
- 懒加载可以将主要代码不写在viewDidLoad里,使代码更加模式化,增加代码可读性
懒加载缺点:
- 懒加载在增加代码可读性的同时,使代码量变多
- 在使用懒加载时在self.label和_label的使用中容易出错造成循环引用,从而造成崩溃