懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法.
注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化
使用懒加载的好处:
(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
(2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
懒加载的具体写法:
在.h文件中
@property(nonatomic,strong) NSArray *arr;
在.m文件中
#pragma mark -懒加载
- (NSArray*)arr{
if(!_arr) {
_arr= [[NSArrayalloc]initWithObjects:@"111",@"222",nil];
}
return_arr;
}
很明显,这是一个get方法。值得注意的是在get方法里千万不能用self.arr,若是如此会形成死循环。原因是self.arr会调用get方法,造成方法中调用自身形成死循环。
写到这里,其实大家还要注意一点,那就是self.和_的区别。因为很多人可能直接用_arr,但是这样是不会调用get方法的。你可以在viewDidLoad方法中NSLog(@"arr:%@",_arr);结果肯定null。改写成NSLog(@"arr:%@",self.arr);就能打印出数组元素。
所以在用到懒加载的时候,记得要在一开始要用self.arr,之后可以_arr,不然都没初始化,没有分配内存空间。不过我个人觉得因为get方法中已经判断有没有初始化,因此都用self.arr是没有问题的。不过这其实不是什么大问题,遇到了很容易发现,发现后在一开始使用变量的时候换成self.就行。