美文网首页
单例对象实现网络请求数据缓存

单例对象实现网络请求数据缓存

作者: candyGU | 来源:发表于2016-01-23 19:33 被阅读0次

      用户在使用APP的时候,有时会因为接电话或者切换其他APP等原因临时退出当前APP,那么当前APP中的图片等网络请求数据可以通过单例的方式进行缓存,从而在用户再次进入APP时直接本地化读取,不需要重新进行同一数据的二次网络请求,优化用户体验。

      GCD为苹果公司自主开发的一个库(libdispatch),提供并发代码的解决方案,可选用GCD的一次性任务功能完成单例对象的创建。 


DataCenter类  === 继承NSObject,对外公开数据存放接口datas;

//声明一个空的静态单例对象,每次创建都是返回同一内存地址,并且单次任务只会被执行一次,所以同一内存地址里面存放的是不会被二次修改的对象,保证单一性。

static DataCenter* sharedDataCenter=nil;

//声明一个静态的GCD的单次任务

static dispatch_once_t onceToken;

//执行GCD的单次任务,任务即为单例对象的初始化语句

+(id)sharedDataCenter{

dispatch_once(&onceToken,^{

//数据缓存中心设计为字典对象   

sharedDataCenter=[[self alloc]init];  });

return sharedDataCenter;

}

-(id)init { self=[super init];

if(self){ self.datas=[NSMutabelDictionary new]; }

return self; }


//调取单例对象

DataCenter*  sharedDataCenter=[DataCenter sharedDataCenter];

//以网络数据的URL地址为键

NSString* key=stringOfURL;

//在缓存字典中查找

id value=[sharedDataCenter.datas objectForKey:key];

if(value==nil){

//进行网络数据请求,并将请求数据存入单例对象的缓存字典中

//将数据显示到界面上

}else{

//将数据显示到界面上

}

相关文章

网友评论

      本文标题:单例对象实现网络请求数据缓存

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