iOS缓存浅析

本文探讨了iOS缓存中的NSDictionary与NSCache的区别,重点分析了NSCache的优缺点。接着,文章详细介绍了SDWebImageCache和YYCache的实现原理及缓存策略。YYCache在内存和硬盘缓存方面表现更优,提供了更好的释放策略和存取速度。文章还提及了OSSpinLock的安全性问题及其在YYCache中的改进。
摘要由CSDN通过智能技术生成

#了解NSDictionary和NSCache的区别,延伸到SDWebImageCahce和YYCache(个人倾向YYCache)

NSDictionary和NSCache最大的区别是:
 1、NSCache线程安全的(内部使用互斥锁实现)
 2、NSCache会自动释放内部数据(收到内存警告会立即释放)
 3、NSCache的key不必遵守NSCopy协议
 4、NSCache内部未使用NSFoundation已有类,使用的是libcache.dylib。

所以自己实现简单的缓存策略,在NSDictionary和NSCache间 还是选择NSCache。

当然NSCache也有缺点,网上的说法(未测试)当key相似度较高时,存取速度急剧下降。缓存释放策略不太好。

SDWebImageCahce原理:
内部维护一个NSCache的子类和文件系统,以图片URL为KEY,维护硬盘和NSCache子类中的缓存。在硬盘读写时,会比较耗时,所以使用队列来保证顺序执行,用NSOperation来做取消,另外还使用到了autoreleasepool,可以让内存在出autoreleasepool时释放(更快释放内存),这在YYCache中也用到了,以后快速释放内存的需求 可以借鉴。
SDWebImageCahce在加载图片的过程:
先在内存维护的NSCache子类中进行寻找,找到就返回;
内存中未找到去硬盘中找,找到,将图片存到内存中后返回,
硬盘中也未找到,就发起网络请求,请求成功后,将数据存到内存和硬盘,返

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值