懒加载&Plist文件

懒加载的由来:不希望每次去调用数据

数据通常是保存在一个可变数组中的

所以通过重写这个成员属性的getter方法

懒加载的写法流程:

1、判断对象是否为nil

2、如果是nil,就加载数据

3、返回数据

注意点:在懒加载中不能使用 self.成员属性名,而是通过 _成员属性名 来拿到对象,这样做的原因是:

- (NSArray *)heroArray{

if (_heroArray == nil) {

_heroArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"heros" ofType:@"plist"]];

//1. 定义可变数组

NSMutableArray *nmArray = [NSMutableArray array];

//2. 遍历字典数组

for (NSDictionary *dict in _heroArray) {

//3. 字典转模型

HMHero *hero = [HMHero heroWithDict:dict];

//4. 将模型添加到可变数组中

[nmArray addObject:hero];

}

//5. 将模型的可变数组赋值给字典数组

_heroArray = nmArray;

}

return _heroArray;

}

_heroArray是直接值访问,而self.heroArray是属性访问,就是通过get/set方法来读取这个值,xcode会默认将两个值通过syncthesize关键字进行同步

所以等于在重写的get方法中调用了这个方法本身

Plist文件:

如果不需要增减代码,这时候通常会使用一个plist文件来代替代码写的数据,注意plist文件中根目录可以是一个数组,也可以是一个字典,它的作用是保存内存中数据存放的路径

通过路径加载文件的方法

NSBundle *bundle = [NSBundle mainBundle];  //这里写完仅仅获取的是手机中的主路径

NSString *path = [bundle pathForResource:@"messageList" ofType:@"plist"];  //仍需要通过这个方法获取需要的数据文件的全路径

你可能感兴趣的:(懒加载&Plist文件)