美文网首页
懒加载&Plist文件

懒加载&Plist文件

作者: Brice_Zhao | 来源:发表于2016-07-14 00:15 被阅读85次

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

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

    所以通过重写这个成员属性的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文件

          本文链接:https://www.haomeiwen.com/subject/jblejttx.html