ObjectiveC的缓存框架EGOCache在iOSApp开发中的使用_第1页
ObjectiveC的缓存框架EGOCache在iOSApp开发中的使用_第2页
ObjectiveC的缓存框架EGOCache在iOSApp开发中的使用_第3页
ObjectiveC的缓存框架EGOCache在iOSApp开发中的使用_第4页
ObjectiveC的缓存框架EGOCache在iOSApp开发中的使用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Objective-CEGOCacheiOSAppEGOCacheEGOCacheEGOCacheisasimplther,ead-skafeyevaluceachestorIeth.asnativesuppofrotNrSStriUI/NSIamnadgNeS,Datab,utcanstoraneythinthgatimplemench.editemexpirafetetrhetimeouwt,hichbydefauislotn,deay.EGOCachee-vaeSStiSaeataEGOCacheEGOCachehEGOCacheEGOCachehEGOCachevoid)clearCa

2、cheEGOCacheOOL)hasCacheSSntruiCocoap然后执行:复制代码代码如下用法用缓存存储:复制代码代码如下:把我保存起来吧读取:复制代码代码如下是不是感觉跟NSDi存框架。很相似,确实,前面我们说了是基于的缓用缓存存储:复制代码代码如下读取:复制代码代码如下用缓存存储:复制代码代码如下读取:复制代码代码如下如何检测缓存时间过期可以设定缓存过期时间,默认是天。查看了一下源码,设置默认时间:复制代码代码如下刚好是一天时间。为什么要提供设定缓存过期时间呢?或者说设定缓存过期时间有什么好处呢?我觉得最大的好处就是可以定时清除缓存。可以设置某一项的缓存时间,很方便管理缓存。那么问

3、题来了:是怎么检测缓存过期时间的呢?2检.测到时间过期之后,什么时候触发删除缓存项的?带着这两个问题,我们来继续分析。你会怎么实现记得在公司里,老板经常会举这样的例子:某某同志,刚来我们公司的时候,遇到问题就知道抱怨。从来不知道去思考怎么解决,只知道把问题抛给领导。工作半年下来,成长了很多。现在碰到问题,不仅把问题抛出来,而且还提供了自己的解决方案.类似的例子,相信大家都听过。同样,既然前面我们提出这两个问题,我们也先来思考一下,如果我们来做该怎么解决?如果让我来写的话,我脑海里初步实现方法有几个:1通.过定时器来轮询,每隔一段时间检测一次。写一个循环来检测。3每.次去读取缓存项的时候,判断缓

4、存时间有没有过期。没过期,就返回读取的缓存项;否则,返回。4当.然,还有一些方法,不一一例举了。仔细想想,这些方法弊端很容易显露出来。为了小小的缓存时间,就用定时器轮询,显然是资源浪费跟方法1差不多。每次读取的时候判断是否过期,如果一直不读取,的缓存会越来越大,也不可取。这些方法都被排除了,还有好的方法吗?继续往下看:是怎么实现的?仔细查看源码,发现在方法里,每次初始化实例对象的时,会遍历一遍文件中所有已存在的缓存项,拿每个缓存项的时间和当前时间作比较,缓存项过期时间早于当前时间,则删除对应缓存文件,并删除文件中对应的记录。具体实现代码如下:读取缓存项信息复制代码代码如下获取当前时间的NSTi

5、meInterv复制代码代码如下:声明保存过期的缓存项对应的复制代码代码如下:遍历缓存项信息并判断缓存时间复制代码代码如下:判/断缓存项过期时间是否早于当前时间如/果缓存项过期时间早于当前时间,移除缓存项把过期的缓存项对于的保存到里面删除过期缓存项对于的key复制代码代码如下:看到这些,是不是觉得人家思路特牛叉,反正,我是觉得这个作者不简单。到这一步就解决了吗?还做了什么?细心的童鞋会发现:是个单列类,也就是说整个程序应用周期只初始化一次。复制代码代码如下:每次初始化的时候去判断了缓存项是否过期,这样做非常正确。思考一个场景:用户打开,被初始化,并判断了缓存项是否过期。如果刚好有一些缓存项在被初始化之后过期。这个时候我们依然可以读到这个缓存项。这就不对了。继续分析源码发现,在读取一个缓存项的时候,先判断缓存项是否存在,然后读取缓存项(注意:是读取初始化的时候没有过期的缓存项,并没有说现在没有过期),最后去判断读取到的缓存项跟当前时间相比是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论