Айфон: Копировать / Клонировать - PullRequest
2 голосов
/ 16 января 2012

Я хочу скопировать или клонировать объект моего собственного письменного класса. Но если я вызываю функцию копирования, копируется только указатель. Поэтому, если я изменю скопированный объект, то и исходный объект тоже изменится.

Есть ли способ / функция действительно клонировать объект?

С наилучшими пожеланиями Мелани

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Объект может быть скопирован, если его класс принимает протокол NSCopying и реализует его единственный метод, copyWithZone: .

См. Копирование объекта


- (id)copyWithZone:(NSZone *)zone{
    MyClass *copy = [[[self class] allocWithZone: zone] init];
    [copy setProperty1:[self property1]];
    return copy;
}
1 голос
/ 16 января 2012

То, что вы ищете, называется Deep Copy, куда вы хотите скопировать содержимое указателя, а не адрес, на который он указывает.

В этом списке есть несколько вопросов о переполнении стека. Ниже:

Кроме того, вот статья из Techtopia: Здесь

Дополнение здесь - мой поиск Google: Здесь

...