懒加载
懒加载也叫延迟加载,是调用的时候才加载的。本质上就是对getter方法的重写。但需要注意的是:如果懒加载的话一定要先判断是否已经有了,如果没有那么再去进行实例化。
如下面的例子:
-(NSArray *)dataArray{
if(_dataArray == nil){
NSArray *dictArray =[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil]];
NSMutableArray *array =[NSMutableArray array];
for (NSDictionary *dic in dictArray) {
[array addObject:[textModel herosWithDic:dic]];
}
_dataArray=array;
}
return _dataArray;
}
例子中需要注意:
1、要先判断—_dataArray是否已经存在,若没有则实例化,否则直接返回。
2、在if(_dataArray == nil)中,必须用_dataArray不能用self.dataArray,否则会导致死循环。因为如果写成self.dataArray,则就会调用懒加载,则getter方法就会一直无限调用下去,导致死循环。_dataArray不会调用getter方法。
3、就是在调用dataArray时,必须是以self.dataArray的方式调用。否则getter方法不会被调用,则懒加载就不起作用。