EGOCache是一个轻量级的缓存框架。用法简单方便,在现在的项目中,我就用到EGOCache来缓存下载过的照片和字符串。
有人可能会问到,缓存照片还需要用EGOCache吗?AFNetworking和SDWebImage不是已经有这些功能了吗?
是的,不过AFNetworking和SDWebImage是http。我的项目用的是socket,所以我选择EGOCache来做缓存。用下来觉得EGOCache还是挺强大的。
EGOCache简介
EGOCache一个简单、线程安全的基于key-value的缓存框架,原生支持NSString、UI/NSImage、和NSData,也支持储存任何实现<NSCoding>协议的类,可以设定缓存过期时间,默认是1天。
EGOCache只有一个类,EGOCache.h和EGOCache.m两个文件。用法也比较容易掌握,仔细研究一下EGOCache.h的方法,很快就可以上手。
EGOCache只提供了磁盘缓存,没有提供内存缓存。同时,也提供了清理缓存的方法:
-(void)clearCache;
EGOCache还提供了判断缓存是否存在的方法:
-(BOOL)hasCacheForKey:(NSString*__nonnull)key;
通过Cocoapods直接加入项目
直接在你的项目的Podfile加入下面一行:
pod 'EGOCache'
然后执行:
$ podupdate
EGOCache用法
1. 用EGOCache缓存NSString
存储:
NSString*saveString=@"把我保存起来吧"; [[EGOCacheglobalCache]setString:saveStringforKey:[NSStringstringWithFormat:@"EGOImageLoader-%lu",(unsignedlong)[saveStringhash]]withTimeoutInterval:24*60*60];
读取:
NSString*getSaveString=[[EGOCacheglobalCache]stringForKey:[NSStringstringWithFormat:@"EGOImageLoader-%lu",(unsignedlong)[@"SaveString"hash]]];
是不是感觉跟NSDictionary很相似,确实,前面我们说了EGOCache是基于key-value的缓存框架。
2. 用EGOCache缓存UIImage
存储:
UIImage*saveImage=[UIImageimageNamed:@"iOSDevTip"]; [[EGOCacheglobalCache]setImage:saveImageforKey:[NSStringstringWithFormat:@"EGOImageLoader-%lu",(unsignedlong)[@"SaveImage"hash]]withTimeoutInterval:24*60*60];
读取:
UIImage*getSaveImage=[[EGOCacheglobalCache]imageForKey:[NSStringstringWithFormat:@"EGOImageLoader-%lu",(unsignedlong)[@"SaveImage"hash]]];
3. 用EGOCache缓存NSData
存储:
NSData*saveData=[NSDatadata]; [[EGOCacheglobalCache]setData:saveDataforKey:[NSStringstringWithFormat:@"EGOImageLoader-%lu",(unsignedlong)[@"SaveData"hash]]withTimeoutInterval:24*60*60];
读取:
UIImage*getSaveData=[[EGOCacheglobalCache]dataForKey:[NSStringstringWithFormat:@"EGOImageLoader-%lu",(unsignedlong)[@"SaveData"hash]]];