2010-06-08 70 views

回答

0

您可能會對這種情況下的散列意味着什麼感到困惑。散列只是Cocoa集合類在內部用來提高性能的一個數字。 NSObject實現了這個方法,所以你不必覆蓋它,除非在比較/搜索數組或字典中的對象時,更好,更有意義的散列算法可以提高性能。

由於沒有對象應該在磁盤上緩存它們的哈希值,所以評論意味着您不應該依賴Apple類返回的具體哈希值。它被認爲是一個次要實施細節。

NSDictionary保留其值,但複製密鑰。所以你不需要做任何事情來將你的視圖作爲值保存在字典中,但是如果你想使用視圖作爲鍵,你必須實現-copyWithZone:方法。

瞭解更多Apple文檔。

+0

是的,我沒有在原始問題中指定,但我確實希望將視圖用作鍵。基本上,我試圖保留一堆關於幾種不同類型視圖的元數據,並且我需要能夠查找給定對象的元數據。你是說我必須繼承並重載copyWithZone:方法才能做到這一點?沒有其他辦法嗎? – 2010-06-08 20:11:30

+0

@Daniel Weber:如果你想使用NSDictionary,是的,你必須接受NSDictionary的行爲。不過,我認爲一個更好的問題就是爲什麼你要保留關於視圖的元數據。通常在這種情況下,視圖將代表模型對象,並且將元數據存儲在模型層中會更有意義。 – Chuck 2010-06-08 20:23:27

+0

是的,當你這樣說時,它似乎沒有道理。但是,我正在使用Interface Builder類型的程序,並且使用了許多不同的標準控件(按鈕,文本框等)。當我在程序中點擊某個人時,我需要能夠訪問關於該控件的一些自定義屬性。我試圖避免繼承所有的東西,因爲我真正需要的是一些額外的字符串和int屬性,我沒有重新定義任何行爲。亞類真的是最好的方法嗎? – 2010-06-08 20:33:26

相關問題