如何去设计一个 iOS缓存类
2019-03-15 本文已影响198人
大兵布莱恩特
iOS 常见内存缓存方案有NSCache ,可以设置最大缓存数量,一旦超过缓存数量,就会将里边的数据进行覆盖操作,确保缓存数据不超过最大数量.
基于这样的设计 小编今天动手写了一个LRUCache 工具,用来缓存数据,内部实现了H ashMap 和 LinkList 进行数据的查找,插入,删除等操作.
实现原理如下
1 每次查找元素时 如果找到了该元素 就把该元素移动到链表头部
2 当链表存储数量超过缓存最大数时 , 会将链表末端元素移除 并将新的元素插入到链表头部
![](https://img.haomeiwen.com/i1155481/5648cbdb40e391ed.png)
头文件声明如下
![](https://img.haomeiwen.com/i1155481/ef3c75aca105ad87.png)
核心实现代码如下
![](https://img.haomeiwen.com/i1155481/656d96a03bdedb09.png)
测试用例
![](https://img.haomeiwen.com/i1155481/e5580cc155449438.png)
![](https://img.haomeiwen.com/i1155481/2be2c822f1bdbf85.png)