Цель C изменить стоимость объекта - PullRequest
1 голос
/ 24 июля 2011
ElementObject1 *o1=   // An XML document's element with some value

ElementObject2 *o2=   //A new element with a new value to be replaced

Я хочу, чтобы "значение по адресу, на который указывает o1", было изменено на "значение по адресу, на который указывает o2"

когда я говорю

o1=o2 this does not work 

Я просто хочу просто отредактировать этот объект XML и заменить некоторые его элементы новыми элементами.

Как я могу сделать это с помощью Objective-c? копировать копировать зону?

Ответы [ 3 ]

4 голосов
/ 24 июля 2011

Да, вы должны реализовать метод

- (id)copyWithZone: (NSZone *) zone

, а затем сказать

o1 = [o2 copy];

Не забудьте освободить o1

[o1 release]; 

идобавьте протокол

<<code>NSCopying> в вашу модель @ interface

3 голосов
/ 24 июля 2011

Вы пытаетесь создать два разных объекта, которые имеют одинаковое значение?Если это так, попробуйте:

o1 = [o2 copy];

Обязательно выполните:

[o1 release];

Когда вы закончите.

Если вы пытаетесь, чтобы оба указателя указывалик тому же объекту, что у вас есть выше (o1 = o2) должно работать.Обязательно сохраните o1, если хотите сохранить его.Надеюсь, это поможет!

1 голос
/ 24 июля 2011

Не существует общего средства для «изменения стоимости объекта». Вы можете свободно изменять значение переменной, но объекты могут быть изменены только через их интерфейс сообщений и свойств. Если объект не предоставляет метод мутирования определенным образом, вы не можете изменить его таким образом. Некоторые классы имеют методы, которые полностью заменяют их содержимое - NSMutableArray и NSMutableString - это те, которые сразу приходят на ум - но нет общего способа сделать это с произвольным объектом в Objective-C.

...