Поведение по умолчанию для метода copyWithZone:
с предоставленными SDK объектами - "мелкая копия".Это означает, что если вы вызовете copyWithZone:
для NSString
объекта, он создаст поверхностную копию, но не глубокую копию.Разница между мелкой и глубокой копией:
Мелкая копия объекта будет только копировать ссылки на объекты исходного массива и помещать их в новый массив.
Глубокая копия фактически копирует отдельные объекты, содержащиеся в объекте.Это делается путем отправки каждому отдельному объекту сообщения copyWithZone:
в вашем пользовательском методе класса.
INSHORT: Чтобы получить поверхностную копию, вы вызываете retain
или strong
для всех переменных экземпляра.Чтобы получить глубокое копирование, вы вызываете copyWithZone:
для всех переменных экземпляра в вашей пользовательской реализации класса copyWithZone:
.Теперь это ваш выбор.