我想知道是否有可能在 Objective-C 中拥有类似于 ActionScript 3 的Dictionary
带有弱键的对象。我希望能够将一个类的实例“附加”到其他任意实例。
例子;
MetaData *meta = [MetaData metaDataForObject:someObject];
meta.whatever = foo;
然后:
foo = [MetaData metaDataForObject:someObject].whatever;
[foo doStuff];
棘手的部分是,在被释放someObject
引用的对象之后,我希望meta
释放引用的对象(并且释放,假设没有客户端代码保留它)。
可能的?我看了看,+[NSValue valueWithNonretainedObject:]
但我不确定这是否是我想要的,因为当我稍后查询时,我-[NSValue nonretainedObjectValue]
似乎会得到一个指向垃圾的指针(当对象被释放时,NSValue 如何将指针归零?)。
谢谢,
本杰明
2011 年 9 月 23 日更新:我相信这样做的方法是使用objc_setAssociatedObject
相关功能。请参阅Objective-C 运行时参考。