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
Зона идентифицирует область памяти, от которой можно выделить для нового экземпляра. Если
zone
NULL
, новый экземпляр выделяется от зоны по умолчанию, возвращающейся из функцииNSDefaultMallocZone
.Обсуждение
Возвращенный объект неявно сохраняется отправителем, кто ответственен за выпуск его. Копия возвратилась, является неизменным, если рассмотрение, “неизменное по сравнению с непостоянным”, применяется к принимающему объекту; иначе точный характер копии определяется классом.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
– mutableCopyWithZone:
(Протокол NSMutableCopying)– copy
(Класс NSObject)