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

      用户在使用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{

//将数据显示到界面上

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,653评论 1 23
  • AFHTTPRequestOperationManager 网络传输协议UDP、TCP、Http、Socket、X...
    Carden阅读 10,512评论 0 12
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,337评论 30 472
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,417评论 25 709
  • 1好种子开花: 今天的微信祝福太多,群发的尤其多,看见老弟也发了一条,我就回了一个,发红包比发祝福有诚意,来姐姐给...
    西红柿的小姑娘阅读 1,293评论 0 1