如何在启用 ARC 的 OS X 10.7 上创建具有弱引用的对象字典(即字典不保留其键和值)?NSMapTable 看起来很有希望,但不幸的是,在启用 ARC 时它不使用弱引用。
问问题
316 次
1 回答
0
NSMapTable 确实是你想要的。
10.8+:
特别是在你的情况下,听起来你想使用这个:
+ (id)weakToWeakObjectsMapTable 返回值 一个新的映射表对象,它对键和值具有弱引用。
来自文档:
主要的选择是让键和/或值“弱”保存,以便在回收其中一个对象时删除条目。
您可以使用快捷方式类方法+ (id)weakToWeakObjectsMapTable
或+ (id)weakToStrongObjectsMapTable
根据您的需要。
另请参阅NSMapTableOptions
以了解如何为其他初始化程序指定行为。
NSMapTableWeakMemory使用适用于ARC或 GC
的弱读写屏障。使用 NSPointerFunctionsWeakMemory 对象引用将在上次发布时变为 NULL。等于 NSMapTableZeroingWeakMemory。
10.7+:
使用– initWithKeyOptions:valueOptions:capacity:
并传入NSMapTableZeroingWeakMemory
选项(假设您的对象是“弱引用安全”)或者– initWithKeyPointerFunctions:valuePointerFunctions:capacity:
,如果没有内置函数适合您/您的版本不可用,您可以使用并指定自定义函数。(也许“不透明”的人物之一会为你工作)
于 2013-10-23T16:23:29.027 回答