NSCopying
NSCopying протокол объявляет метод для того, чтобы предоставить функциональные копии объекта. Точное значение «копии» может варьироваться от класса до класса, но копия должна быть функционально независимым объектом со значениями, идентичными оригиналу в то время, когда была сделана копия. Копия, произведенная с NSCopying неявно сохраняется отправителем, кто ответственен за выпуск его.
NSCopying объявляет один метод, copyWithZone:, но копирование обычно вызывается с удобным методом copy. copy метод определяется для всех объектов, наследовавшихся от NSObject и просто вызывает copyWithZone: с зоной по умолчанию.
Ваши опции для реализации этого протокола следующие:
Реализация
NSCopyingиспользованиеallocиinit...в не наследовавшихся классахcopyWithZone:.Реализация
NSCopyingпутем вызова суперклассаcopyWithZone:когдаNSCopyingповедение наследовано. Если реализация суперкласса могла бы использоватьNSCopyObjectфункционируйте, сделайте явные присвоения на переменные экземпляра указателя для сохраненных объектов.Реализация
NSCopyingпутем сохранения оригинала вместо того, чтобы создать новую копию, когда класс и его содержание являются неизменными.
Если подкласс наследовал NSCopying от своего суперкласса и объявляет дополнительные переменные экземпляра, подкласс должен переопределить copyWithZone: должным образом обработать его собственные переменные экземпляра, вызывая реализацию суперкласса сначала.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
copyWithZone (_:) - copyWithZone:ТребуемыйВозвращает новый экземпляр, это - копия получателя. (требуемый)
Объявление
Swift
func copyWithZone(_zone: NSZone) -> AnyObjectObjective C
- (id)copyWithZone:(NSZone *)zoneПараметры
zoneЗона идентифицирует область памяти, от которой можно выделить для нового экземпляра. Если
zoneNULL, новый экземпляр выделяется от зоны по умолчанию, возвращающейся из функцииNSDefaultMallocZone.Обсуждение
Возвращенный объект неявно сохраняется отправителем, кто ответственен за выпуск его. Копия возвратилась, является неизменным, если рассмотрение, “неизменное по сравнению с непостоянным”, применяется к принимающему объекту; иначе точный характер копии определяется классом.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
– mutableCopyWithZone:(Протокол NSMutableCopying)– copy(Класс NSObject)
