2012-01-18 4 views
1

В объявлении свойства можно отправить атрибут «копировать». Вы не можете использовать копию для всех объектов, но для каких объектов можно использовать атрибут copy?Какие классы можно скопировать?

+0

Моя книга описывает копию как атрибут (в следующем контексте): @property (неатомической, копия) – Foo

ответ

6

-copy не является атрибутом, это метод. Это нормально, чтобы отправить -copy на любой объект, который реализует протокол NSCopying.

Если у вас есть свойство, вы можете (должны?) Использовать атрибут copy, если тип свойства - это класс, который реализует NSCopying. то есть любой класс, который можно отправить -copy.

+0

Моя книга описывает копию как атрибут (в следующем контексте): @property (неатомической, копия) – Foo

+0

@foo : Извините, я посмотрел на слово «отправить» в ваш вопрос и предположил, что вы имели в виду сообщение '-send'. – JeremyP

+0

@Foo: отредактирован, чтобы говорить о свойствах тоже. – JeremyP

0

Вы не можете скопировать код . Копировать - это метод экземпляра, он делает экземпляр клона из другого экземпляра. Чтобы экземпляр был доступен для копирования, ему необходимо реализовать протокол NSCopying. Некоторые классы NSFundation/Cocoa реализуют его, некоторые - нет. Для тех, кому не нужно писать реализацию самостоятельно, используя категории. Но будьте осторожны, это может быть очень сложным для классов пользовательского интерфейса.

Смежные вопросы