
它有点像UItableVIEwCell机制.当我需要一个新对象时,我将从池中获取一个(我不关心哪一个),如果没有可用的,我将创建一个新的放入缓存.当我完成它后,我会把它放回池中供以后使用.
NSCache是我所知道的最相似的类,但它是一个键/值缓存,所以它并不是我想到的.我不关心缓存给我的对象,我想从缓存中获取一个(任何一个),使用它,然后在我完成时将其放回去.
那么我应该将这种机制用于什么呢?
编辑:它不必来自iOS框架.我也对外部开源库开放.
编辑2:我将举一个例子来澄清:
假设我正在尝试创建一个蚁巢(缓存):巢内有大约10000只蚂蚁.
>当我需要食物时,我会抓住一只蚂蚁并告诉它出去吃食物(蚂蚁从缓存中移除).我不关心哪只蚂蚁做这项工作,因为他们都是我的蚂蚁.当它的任务完成后,蚂蚁将回到巢穴并留在那里,直到我给它一个新的命令.
>如果我的巢由于任何原因(缓存为空)已经用完了蚂蚁,我会告诉蚂蚁女王再繁殖一些.
>如果嵌套资源不足(收到内存警告),我希望过多的蚂蚁自行死亡(类似于NSCache的自动内存管理).
>如果没有资源危机,蚂蚁可以留在原地并等待我的订单(我是一个慷慨的上帝).
所以Ant类是NSObject的子类.使用NSMutableSet来保存每个Ant的哈希值.有关哈希方法,请参阅NSObject协议参考.
使用anyObject出队和addobject:从NSMutableSet中排队哈希值.使用hash作为NSCache objectForKey:的参数:
如果Ant对象总数大于NSUIntegers的NSMutableSet,则这仅节省内存.
这似乎比尝试使用NSCache的线程安全和自动删除创建自定义的NSMutableSet类更容易.
总结以上是内存溢出为你收集整理的ios – Obj-C:如何在没有密钥的情况下创建缓存全部内容,希望文章能够帮你解决ios – Obj-C:如何在没有密钥的情况下创建缓存所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)