我希望将对象的引用值用作字典中的键,而不是对象值的副本。所以,我基本上想要在字典中存储与另一个对象的特定实例相关联的对象,并在以后检索该值。
这可能吗?这完全违背了NSDictionary的想法吗?我可以说我可能正在以错误的方式接近这个,因为字典要我在对象本身上实现NSCopying,这对我正在做的事情来说并没有多大意义。我可以看到我应该做的是包装指针值,但这似乎有点疯狂。
建议将不胜感激。
答案 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;