3

我想保留mutable array一组. 非常适合这种需求,除了一个细节......想要一个它拥有的每一个价值的关键。UIViewsNSMapTableNSMapTable

有类似的东西NSMapArray吗?如果没有,我是否需要为我存储的所有值生成一次性唯一键?我应该使用NSUUID生成键名吗?

编辑:请不要说我在谈论真正的自归零参考。CFArrays 和 NSValue 解决方案存储引用,当它们的引用对象被释放时,这些引用不会自行消失......它们最终会成为垃圾指针。

4

3 回答 3

1

您可以在 iOS 6 上尝试NSHashTable,它类似于 a NSSet,支持弱引用(NSPointerArray看起来也不错,但文档说它不支持 ARC 下的弱引用)。

NSPointerArray 编辑:有些人似乎认为与文档所说的相反,ARC下的弱引用为零。OS X 10.8 Foundation Release Notes 是这么说的,尽管类文档说相反(iOS 发布说明没有说)。毕竟,这就是他们在 OS X 10.8 和 iOS 6.0 中添加+ weakObjectsPointerArray构造函数和NSPointerFunctionsWeakMemory选项的原因......你应该尝试......

于 2013-03-26T09:17:05.720 回答
0

你所说的有点自相矛盾:一方面你说你希望它们将弱引用归零,在这种情况下,你的数组将nil在它们被释放后填充元素。另一方面,您说您希望它像NSMapTable,这可能会在弱引用被释放后删除元素。它是哪一个?

如果您希望它真正将弱引用归零(这将nil在您的数组中留下元素),一个好的解决方案是使用std::vector<id __weak>一个 C++ 向量,其元素正在归零弱引用。ARC 将处理所有细节。

于 2013-05-06T07:39:45.350 回答
0

您说将弱引用存储在数组中很重要。这可以使用 Core Foundation 数组来实现。你会在这里找到答案:非保留数组代表

于 2013-03-26T06:50:21.793 回答