我想了解NSCache的概念,有一件事让我想起了一个NSCache实例并不保证将值返回给您之前存储的密钥。如果它试图添加键值对,它可能甚至不存储键值对,如果它认为此时性能更重要。如何将NSCache与多个信息一起用作“密钥”?
那意味着什么,对我来说,就是:
- 每个键必须“保持”足够的信息来产生的值,如果必要
- 每个查询的NSCache,基本上只是形式因此应该包括生成相应值所需的所有信息。
- 从以上两点可以看出,NSCache并没有为在键和值之间建立任何类型的关联服务的目的 - 用户必须能够独立于缓存生成值,并且唯一目的是使用NSCache不是'查找'某种价值,而只是为了提高性能而交易内存
所以我的问题是关于存储图像的透明度蒙版。起初,我认为我只需要使用图像的名称作为键,但是从上面的推论看来,这似乎还不够 - 我还必须包括用于生成掩码的所有其他参数,例如例如,透明度阈值。这也意味着每次我向缓存提供掩码时,我都必须提供所有参数。我能想到的唯一方法就是使用NSInvocation
这样的关键字;但这似乎是一个相当笨拙的解决方案。
“使用NSCache的唯一目的不是'查找'某种价值,而只是为了提高性能而交换内存。”这就是缓存所做的。 – JAB
基本上,如果你想要的只是键值关联,只需使用'NSMutableDictionary'和图像名称作为键。 http://stackoverflow.com/a/5756162/138772 – JAB