您的位置:首页 > 其它

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

2016-12-15 00:00 246 查看
OC是一门弱语言,是基于运行时的语言

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

比如获取图片的个数/前缀

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

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

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

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

所以我们需要新建一个类,继承自NSObject,我们可以把我们数组中的字典来转换成一个对象

设置对象的属性与字典中的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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息