Я знаю, что необходимо, если Ваш объект будет использоваться в качестве ключа в NSDictionary. Есть ли какие-либо другие времена как это, что NSCopying требуется?
Если я думаю, что мне не нужны мои объекты модели для приспосабливания NSCopying, я, вероятно, неправильно?
Когда он передается свойству копирования или любому другому методу, который задокументирован как копирующий его аргумент.
NSCopying
широко используется. Каждый раз, когда объект владеет чем-то, что не должно делиться с другими объектами, вам понадобится его копия. Изменяемые объекты часто необходимо копировать, хотя NSMutableCopying
может потребоваться вместо NSCopying
.
Думайте о протоколе NSCopying как о версии целевого C подпрограмм клонирования. Если бы вызывающий объект должен был клонировать ваш объект, какого поведения вы бы хотели? Если ваш объект состоит исключительно из примитивных типов, вам не нужно об этом беспокоиться. Но если у вас есть какие-либо сложные типы в качестве членов, вы можете клонировать / копировать их вместо того, чтобы передавать на них простые ссылки.