首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Obj:如何在没有键的情况下实现缓存

Obj:如何在没有键的情况下实现缓存
EN

Stack Overflow用户
提问于 2015-06-05 07:38:16
回答 1查看 223关注 0票数 4

我正在尝试对对象进行缓存,以便按需重用。

它有点像UITableViewCell机制。当我需要一个新的对象时,我将从池中获得一个对象(我不关心哪个对象),如果没有可用的对象,我将创建一个新的对象放到缓存中。当我做完它,我会把它放回游泳池,供以后使用。

NSCache是我所知道的最类似的类,但是它是一个键/值缓存,所以这不是我所想的。我不在乎缓存给我哪个对象,我只想从缓存中获取一个(任意一个),使用它,然后在我完成时将它放回去。

那么,我应该用什么来实现这种机制呢?

编辑:它不必来自iOS框架。我也对外部开源库开放。

编辑2:我将举一个例子来澄清:假设我试图创建一个蚂蚁巢(缓存):巢内大约有10000只蚂蚁。

  • 当我需要食物时,我会抓住一只蚂蚁,让它出去拿食物(蚂蚁被从缓存中移走)。我不在乎是哪只蚂蚁干的,因为它们对我来说都是蚂蚁。当它的任务完成后,蚂蚁会回到巢穴,呆在那里,直到我给它一个新的命令。
  • 如果我的巢穴由于任何原因已经用完了(缓存是空的),我会告诉蚂蚁女王繁殖更多。
  • 如果巢穴耗尽了资源(接收到内存警告),我希望过多的蚂蚁自行死亡(类似于NSCache的自动内存管理)。
  • 如果没有资源危机,蚂蚁可以呆在原地等待我的命令(我是个慷慨的神)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-04 20:26:16

使用NSCache。但是您不想处理NSCache的密钥。

所以Ant类是NSObject的子类。使用NSMutableSet来保存每个Ant的hash。有关NSObject方法,请参阅hash协议参考。

使用anyObject去队列,使用addObject:从NSMutableSet中登记哈希值。使用哈希作为NSCache objectForKey:的参数。

这只在Ant对象总量大于NSMutableSet of NSUIntegers时才会节省内存。

这似乎比尝试使用NSCache的线程安全和自动删除创建自定义的NSMutableSet类更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30660968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档