字典转换模型和懒加载以及内存管理

OC是一门弱语言,是基于运行时的语言数组

当从Root为array类型(数组里面放置的是字典)的plist文件中读取数据时缓存

好比获取图片的个数/前缀动画

    NSString *imageStrPre = dict[@"icon"];atom

    

    int count = [dict[@"count"] intValue];spa

    

    NSString *titleString = dict[@"desc"];.net

当@""里面写的内容与实际内容不符的时候,写的时候,Xcode不会自行提示,静态编译的时候也不会报错,当运行的时候,才会知道你有错误,当你写了不少的内容的时候,你很难发现哪里出现错误.因此,咱们能够根据Xcode中一个强大的功能--自动提示,在咱们编写代码的时候就知道哪里错误.code

因此咱们须要新建一个类,继承自NSObject,咱们能够把咱们数组中的字典来转换成一个对象orm

设置对象的属性与字典中的key值一一对应,这样咱们在读取字典中的数据的时候就能够用实例化的对象的属性来取值,这样Xcode就会自动提示对象的属性来进行取值.对象

#import <Foundation/Foundation.h>继承

@interface HMAnimationModel : NSObject

@property (nonatomic,copy)NSString *icon;

@property (nonatomic,copy)NSString *desc;

@property(nonatomic,assign)int count;

//字典转换模型方法

- (instancetype)initWithDict:(NSDictionary *)dict;

+ (instancetype)animationModelWithDict:(NSDictionary *)dict;

@end

关于懒加载:

咱们在开发APP时,会尽可能的节省咱们的内存,因此咱们在读取数据的时候,会根据路径来读取,而不是采用缓存的方式来读取数据.

而为了节省时间,咱们在用到数据的时候才回去读取数据,并且加载数据以后,之后再用到这个数据的时候就不须要再次加载.

这种状况就叫作懒加载

懒加载一般是重写get方法来实现的

//懒加载方法

 

- (NSArray *)dataArray{

  if(nil==_dataArray){    

    //建立可变数组

    NSMutableArray *arr=[NSMutableArray array];

    //获取文件路径

    NSString *filePath=[[NSBundle mainBundle] pathForResource:@"Images.plist" ofType:nil];

    //经过文件路径把文件存储到数组中

    NSArray *temp=[NSArray arrayWithContentsOfFile:filePath];

    //数组中存放的都是字典 经过字典转化为模型

    //遍历数组,转化为模型

    for (NSDictionary *dict in temp) {

        //实例化模型

        HMAnimationModel *model=[HMAnimationModel animationModelWithDict:dict];

        //把模型存放到数组中

        [arr addObject:model];

    }

    //赋值

    _dataArray=arr;

}

    return _dataArray;

}

当咱们用到数据的时候,经过点语法来调用咱们重写的get方法来读取数据,当咱们第二次调用点语法的时候,内部会判断你是否读取过数据,若是读取过就不会再次读取.这样就大大节省了运行时间 .

并且咱们在开发APP的时候,要善始善终,在一个对象不用的时候,要及时释放,以便节省内存,好比动画播放完毕以后

//动画执行完以后释放内存

    [_imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:count*0.1];

相关文章
相关标签/搜索