在一些地方我需要對象到對象的映射,並使用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