OS X:如何在 10.7 上制作具有弱引用对象的字典,启用 ARC



如何在启用了 ARC 的 OS X 10.7 上创建具有弱引用的对象字典 - 也就是说,字典不保留其键和值?NSMapTable 看起来很有前途,但不幸的是,当启用 ARC 时,它不使用弱引用。

NSMapTable确实是你想要的。

10.8+:

特别是在您的情况下,听起来您想使用它:

+ (id)弱到弱对象映射表返回值一个新的映射表对象,它对键和值的引用较弱。

从文档中:

主要选项是"弱"保存键和/或值,以便在回收其中一个对象时删除条目。

您可以根据需要使用+ (id)weakToWeakObjectsMapTable+ (id)weakToStrongObjectsMapTable的快捷方式类方法。

另请参阅NSMapTableOptions,了解如何为其他初始值设定项指定行为。

NSMapTableWeakMemory
使用适用于 ARC 或 GC 的弱读写屏障。使用 NSPointerFunctionsWeakMemory 对象引用将在上一版本上变为 NULL。等于 NSMapTableZeroingWeakMemory。

10.7+:

在选项中使用– initWithKeyOptions:valueOptions:capacity:和传递NSMapTableZeroingWeakMemory(假设您的对象是"弱引用安全")或者,您可以使用– initWithKeyPointerFunctions:valuePointerFunctions:capacity:并指定自定义函数,如果内置函数都不适合您/在您的版本上不可用。(也许其中一个"不透明"的人格会适合你)

相关内容

  • 没有找到相关文章

最新更新