用户在使用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{
//将数据显示到界面上
}
网友评论