懒加载
- 本质是重写getter方法;
- 用到时候再加载,而且只加载一次;
代码实例
// 以懒加载一个UIImageView控件为例
- (UIImageView *)imageView
{
if (!_imageView) { // 这里是不可以写成self.imageView的;(因为这里是getter方法)
_imageView = [[UIImageView alloc]init];// 这里可以写成self.imageView(因为这里是setter方法)
}
return _imageView;// 这里是不可以写成self.imageView的(因为这里是getter方法);
}
懒加载的好处
- 懒加载体现了OC的延迟加载思想,什么时候用什么时候加载;
cell中imageView属性, tabbar中item都是通过懒加载的方式实现的;
- 懒加载可以打破对象彼此引用时,先后声明的限制;
- 不必将创建的代码全部写在- (void)viewDidLoad方法中,增加了代码的可读性;
- 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,耦合性低;
- 只有到真正需要资源的时候才回去加载,节省了内存空间;
- 当收到内存警告是,需要didReceviewMemoryWarning方法中清理缓存,如果是懒加载的话,如果以后有的地方用到了该属性,还会再次顺利的加载出来;