懒加载:避免浪费内存
- 用到时再加载,而且只加载一次
- 想用的时候,数据就有,不管之前什么状态
get方法,重写shops函数
-(NSArray *) shops
{
if(_shops == nil) //当——shops数据为空时才加载,同时确保数据只加载一次
{
NSString file = [[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];
_shops = [NSArray arrayWithContentsOfFile:file];
}
return _shops;
}
/** 属性、方法的声明 */
@end
- 关于懒加载中注意的地方
- -(NSArray *) shops
这是一个get方法
_shops 如果换成 self.shops 等价于 [self shops],此代表从 shops 拿出数据看是否等于 nil,这就会导致和 -(NSSArray *) shops 形成死循环,所以不能使用 self.shops
- _shops = [NSArray arrayWithContentsOfFile:file];
这是将 [NSArray arrayWithContentsOfFile:file] 赋值给 _shops, 此处 _shops 可以写成 self.shops ,因为没有调用 shops 函数,只是简单赋值
此处若写成 return self.shops 代表从 self.shops 中拿出数据返回,又会调用 -(NSSArray *) shops 来获得数据从而形成死循环,因此不能这么写