对象指针值作为字典的键

5
我想使用对象的引用值作为字典中的键,而不是对象值的副本。因此,我希望在字典中存储与另一个对象实例相关联的对象,并稍后检索该值。
这种做法可行吗?是否完全违背了NSDictionary的概念? 我可以看出我可能错了,因为字典要求我在对象本身上实现NSCopying,这在我正在做的事情方面并不真正有意义。我可以看到我应该真正做的是包装指针值,但那似乎有点疯狂。
感谢您的建议。
4个回答

11

我认为你可以使用[NSValue valueWithPointer:object]


2

NSMutableDictionary 仅处理Objective-C对象实例。例如,当您调用 setObject:forKey: 方法时,会对键调用copyWithZone:方法并对值调用retain方法。

如果您想拥有字典结构并且能够处理任意键和值,则可以选择使用CFMutableDictionary。您可以精确描述如何处理键和值;它足够灵活,可以处理任意指针或甚至char *字符串。


1
这对我起了作用。
aDictionary[@((intptr_t)object)] = ...;

0

你可以使用myObject在内存中的地址作为myDictionary中的键

NSString *myObject_addressInMemory = [NSString stringWithFormat:@"%p", myObject];

myDictionary[myObject_addressInMemory] = someValue;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接