在一些地方我需要对象到对象的映射,并使用NSMutableDictionary作为查找表。关键一直是盒装NSObject的哈希值,例如:使用NSObject的哈希来创建一个NSMutableDictionary键有什么问题?
[dict setObject:newObject forKey:[NSNumber numberWithUnsignedInt:[keyObject hash]]];
其中keyObject是一个自定义类,它继承了NSObject中的实例 - (NSUInteger)哈希实现原样。我都保留引用到别的地方keyObject,我可以用它来获得NEWOBJECT的持有正是如此:
[dict objectForKey:[NSNumber numberWithUnsignedInt:[keyObject hash]]]
这似乎工作至今,虽然有关的应用程序还年幼。
马特·加拉格尔,但是,写关于这个方法:
稍微破坏了我的信心(和,因为这是一个iOS应用,我不能用他的建议的NSMapTable) 。
任何人都可以指出以这种方式使用NSObject的散列有什么问题,以及对于iOS应用程序的简单对象 - 对象映射有什么更好的方法?
“鞋拔”?在iOS上,'sizeof(NSUInteger)== sizeof(unsigned int)'。 – 2011-05-18 17:57:34
@Josh Caswell:'在iOS上,sizeof(NSUInteger)== sizeof(unsigned int)'虽然这可能是真的,但'valueVithPointer:'状态意图没有'NSValue'更清楚吗? – dawg 2011-05-18 20:33:55
@drewk:我认为使用地址是正确的路要走,'+ [NSValue valueWithPointer:]'是一个很好的方法。我只是想指出,alastair的答案似乎不正确地指OS X. – 2011-05-18 20:44:32