Переопределить copy или copyWithZone: или оба?

Я смущен, глядя на документацию Apple и читая шаблоны проектирования Какао. В документации Apple для copyWithZone: говорится:

Этот метод существует, поэтому объекты класса можно использовать в ситуациях, когда вам нужен объект, соответствующий протоколу NSCopying. За Например, этот метод позволяет использовать объект класса как ключ к Объект NSDictionary. Вы не должны отменять этот метод.

Для копии он гласит:

Это удобный метод для классов, которые используют NSCopying протокол. Исключение возникает, если нет реализации для copyWithZone :.

NSObject сам по себе не поддерживает протокол NSCopying. Подклассы должен поддерживать протокол и реализовывать метод copyWithZone :. А версия подкласса copyWithZone: метод должен отправлять сообщение to super first, чтобы включить его реализацию, если подкласс происходит непосредственно от NSObject.

В примерах в шаблонах дизайна какао они переопределяют copyWithZone: и mutableCopyWithZone: , но не переопределяют копию при соответствии NSCopying протокол. Это то, что мне следует делать, если я хочу использовать свой собственный подкласс в NSDictionary в качестве ключа?

Или мне заменить копию ?

Точно так же, если я сделаю [myClass copy] , вызовет ли это copyWithZone: или copy для этого моего настраиваемого подкласса? Спасибо.

8
задан Costique 14 February 2012 в 18:04
поделиться