我很困惑,看着蘋果的文檔和閱讀可可設計模式。在蘋果文檔copyWithZone:
,有這麼一句話:覆蓋copy或copyWithZone:或兩者?
這種方法存在這樣的類對象可以在 你需要一個符合NSCopying協議的對象的情況下使用。例如,對於 示例,此方法允許您使用類對象作爲NSDictionary對象的鍵。您不應該重寫此方法。
對於copy
記載:
這對於採用NSCopying 協議類的便捷方法。如果 copyWithZone:沒有實現,則會引發異常。
NSObject本身不支持NSCopying協議。子類 必須支持該協議並實現copyWithZone:方法。 A copyWithZone:方法的子類版本應該先發送消息 以超級優先,以合併其實現,除非子類 直接從NSObject下降。
在可可設計模式的例子,它們將覆蓋copyWithZone:
和mutableCopyWithZone:
但符合NSCopying
協議時不覆蓋copy
。如果我想在NSDictionary
中將我的自定義子類用作關鍵字,那我應該怎麼做?
還是我覆蓋copy
?
同樣,如果我做[myClass copy]
,那是否爲我的自定義子類調用copyWithZone:
或copy
?謝謝。