首先,我想我理解正確的NSCopying確認...NSCopying,copyWithZone和NSDictionary的
爲了用一個簡單的NSObject的子類作爲一個NSDictionary的關鍵,我必須把它實現NSCopying協議。在複製實例的copyWithZone方法中,我必須爲我的類分配/ init一個新實例,將其屬性設置爲與複製的實例相同並返回它。
其次,爲什麼NSDictionary使用添加到它的實例副本而不是實例本身?
首先,我想我理解正確的NSCopying確認...NSCopying,copyWithZone和NSDictionary的
爲了用一個簡單的NSObject的子類作爲一個NSDictionary的關鍵,我必須把它實現NSCopying協議。在複製實例的copyWithZone方法中,我必須爲我的類分配/ init一個新實例,將其屬性設置爲與複製的實例相同並返回它。
其次,爲什麼NSDictionary使用添加到它的實例副本而不是實例本身?
如果是子對象,子類不需要實現NSCopying
,密鑰通常應該是NSString
s,它們被複制。
右鍵:只有鍵需要實現'NSCopying'。 – Wevah
對不起,我不清楚。該對象將用作關鍵。我已經修改了這個問題來反映這一點。那爲什麼它需要一個對象的副本而不是對象本身呢? – Undistraction
看看這個問題:http://stackoverflow.com/questions/2394083 – hypercrypt
複製詞典中的鍵。對象被保留。通常,字符串被用作鍵,並且因爲它們符合NSCopying,所以沒有問題。如果由於某種原因你想使用其他類型的對象,你必須確定它符合NSCopying。 – trudyscousin
感謝您的回覆。你能解釋爲什麼要複製密鑰嗎? – Undistraction
看看http://stackoverflow.com/questions/2394083/cocoas-nsdictionary-why-are-keys-copied – trudyscousin