Objective-C的缓存框架EGOCache在iOS App开发中的使用

2020-01-15 14:06:40于海丽

读取:
复制代码
UIImage *getSaveImage = [[EGOCache globalCache] imageForKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveImage" hash]]];
用EGOCache缓存NSData

 

存储:

复制代码
NSData *saveData = [NSData data];
[[EGOCache globalCache] setData:saveData forKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveData" hash]] withTimeoutInterval:24*60*60];
读取:
复制代码
UIImage *getSaveData = [[EGOCache globalCache] dataForKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveData" hash]]];

 

EGOCache如何检测缓存时间过期
EGOCache可以设定缓存过期时间,默认是1天。查看了一下EGOCache源码,设置默认时间:

复制代码
    [self setDefaultTimeoutInterval:86400];
    //86400 = 24 * 60 * 60 刚好是一天时间。
EGOCache为什么要提供设定缓存过期时间呢?或者说设定缓存过期时间有什么好处呢?我觉得最大的好处就是可以定时清除缓存。可以设置某一项的缓存时间,很方便管理缓存。

 

那么问题来了:

  • EGOCache是怎么检测缓存过期时间的呢?
  • 检测到时间过期之后,什么时候触发删除缓存项的?

    带着这两个问题,我们来继续分析。

    你会怎么实现

    记得在公司里,老板经常会举这样的例子:

    某某同志,刚来我们公司的时候,遇到问题就知道抱怨。从来不知道去思考怎么解决,只知道把问题抛给领导。工作半年下来,成长了很多。现在碰到问题,不仅把问题抛出来,而且还提供了自己的解决方案...
    类似的例子,相信大家都听过。同样,既然前面我们提出这两个问题,我们也先来思考一下,如果我们来做该怎么解决?

    如果让我来写的话,我脑海里初步实现方法有几个: