懒加载

懒加载:避免浪费内存

  • 用到时再加载,而且只加载一次
  • 想用的时候,数据就有,不管之前什么状态

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方法
  • if(_shops == nil)
_shops 如果换成 self.shops 等价于 [self shops],此代表从 shops 拿出数据看是否等于 nil,这就会导致和 -(NSSArray *) shops 形成死循环,所以不能使用 self.shops
  • _shops = [NSArray arrayWithContentsOfFile:file];
这是将 [NSArray arrayWithContentsOfFile:file] 赋值给 _shops, 此处 _shops 可以写成 self.shops ,因为没有调用 shops 函数,只是简单赋值
  • return _shops;
此处若写成 return self.shops 代表从 self.shops 中拿出数据返回,又会调用 -(NSSArray *) shops 来获得数据从而形成死循环,因此不能这么写

你可能感兴趣的:(懒加载)