对象指针值作为字典的键

时间:2010-04-25 12:20:00

标签: objective-c dictionary reference

我希望将对象的引用值用作字典中的键,而不是对象值的副本。所以,我基本上想要在字典中存储与另一个对象的特定实例相关联的对象,并在以后检索该值。

这可能吗?这完全违背了NSDictionary的想法吗?我可以说我可能正在以错误的方式接近这个,因为字典要我在对象本身上实现NSCopying,这对我正在做的事情来说并没有多大意义。我可以看到我应该做的是包装指针值,但这似乎有点疯狂。

建议将不胜感激。

4 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:2)

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

如果您想拥有字典结构并且能够处理任意键和值,那么您可以使用CFMutableDictionary。您可以准确描述使用键和值完成的操作;它足够灵活,可以处理任意指针或事件char *字符串。

答案 2 :(得分:0)

这对我来说很有把戏

aDictionary[@((intptr_t)object)] = ...;

答案 3 :(得分:0)

您可以将 myObejct 内存中的地址用作 myDictionary 中的键

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

myDictionary[myObject_addressInMemory] = someValue;