Obj-C:如何不使用键进行缓存

空速

我正在尝试缓存对象以按需重用。

它有点像UITableViewCell机制。当我需要一个新对象时,我将从池中获取一个对象(我不在乎哪个对象),如果没有可用对象,我将创建一个新对象放入缓存中。完成后,我会将其放回池中以备后用。

NSCache是​​我所知道的最相似的类,但是它是键/值缓存,因此它与我的想法并不完全相同。我不在乎缓存给我哪个对象,我只想从缓存中得到一个(任何一个),使用它,然后在完成后放回去。

那么我应该为这种机制使用什么呢?

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

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

  • 当我需要食物时,我会抓住一只蚂蚁,并告诉它出去吃东西(蚂蚁已从缓存中移出)。我不在乎哪只蚂蚁会做这份工作,因为它们都是我的蚂蚁。完成其任务后,蚂蚁会回到巢穴并待在那儿,直到我给它重新定单为止。
  • 万一我的巢由于某种原因用完了蚂蚁(缓存为空),我会告诉蚂蚁女王再繁殖一些。
  • 万一嵌套用完了资源(收到内存警告),我希望过多的蚂蚁自己死掉(类似于NSCache的自动内存管理)。
  • 如果没有资源危机,蚂蚁可以留在原地,等待我的命令(我是一个慷慨的上帝)。
杰夫

使用NSCache。但是,您不想处理NSCache的键。

因此Ant类是NSObject的子类。使用NSMutableSet容纳hash每个蚂蚁。有关方法,请参见《NSObject协议参考hash

用于从NSMutableSet中使哈希值anyObject出队和addObject:入队。使用哈希作为NSCache的参数objectForKey:

仅当Ant对象总数大于NSUIntegers的NSMutableSet时,这才节省内存。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您使用哪个“ obj”或“ self.obj”?

来自分类Dev

从obj c调用swift

来自分类Dev

从obj c调用swift

来自分类Dev

使用clone()与新obj

来自分类Dev

在“ on”方法中使用obj / this

来自分类Dev

通过obj键访问属性

来自分类Dev

如何使用$ obj-> A :: a代替$ obj-> $ b

来自分类Dev

在swift / obj c中编辑css文件而不使用javascript

来自分类Dev

什么是.c.obj / .cpp.obj文件?

来自分类Dev

煤渣如何纹理.obj trimesh

来自分类Dev

PyOpenGL如何导入obj文件?

来自分类Dev

煤渣如何纹理.obj trimesh

来自分类Dev

如何从ImageIcon获取图像(obj)

来自分类Dev

obj.hasOwnProperty(key)与使用obj [key]直接引用

来自分类Dev

使用 Object.assign 将 obj 传递给 obj

来自分类Dev

生成Obj-C方法

来自分类Dev

3解析错误obj c

来自分类Dev

Swift Obj-c模型

来自分类Dev

使用OpenGl渲染.obj文件

来自分类Dev

使用OpenGl渲染.obj文件

来自分类Dev

使用NFT标记渲染.obj

来自分类Dev

使用Deepcopy创建新的obj,但使用旧的obj创建新的obj共享变量

来自分类Dev

为什么要使用此obj.method.call(obj,arg)而不是obj.method(arg)?

来自分类Dev

如何使用php根据值对json obj进行排序

来自分类Dev

使用 MVVM 在 XCode (Obj C) 中进行单元测试

来自分类Dev

如何在androidplot中使用obj的参数

来自分类Dev

使用obj-c的UINavigationController居中按钮

来自分类Dev

递归取obj文件进行链接

来自分类Dev

当包含不使用的参数时,glsl Shader不会绘制obj