некоторая проблема с переменными в target-c - PullRequest
0 голосов
/ 07 июня 2011

Вот что я делаю:

    [imageTag.mediaTags addObject:unitTag];
    [imageTag.allTags addObject:unitTag];

    unitTag.title=@"";
    unitTag.link=@"";
    unitTag.description=@"";
    unitTag.price=@"";
    unitTag.imageLink=@"";

Проблема в том, что после выполнения execute вне строки 2 значения, хранящиеся в массиве, также теряются (я использовал GDB для печати и выяснил это). Теперь дело в том, что я повторно использую объект unitTag для ввода некоторой информации и сохраняю эту информацию в массиве. Так какие у меня варианты? Мне нужно удалить значения, потому что некоторые значения не являются обязательными, и я не хочу портить.

Может кто-нибудь, пожалуйста, дайте мне знать? Спасибо.

1 Ответ

1 голос
/ 07 июня 2011

Если я правильно понимаю, вам нужно сделать копию объекта UnitTag и вставить его в массив.Вы просто сохраняете ссылку на объект в массиве, а затем обнуляете значения, которые использует ссылка.

addObject не сохраняет копию - она ​​сохраняет фактическую ссылку на объект.

ToЧтобы сделать копию, вам нужно создать новый объект, которым является unitTag, а затем добавить его.Так что потенциально ваш код может быть:

id unitTagCopy = [unitTag createCopy];
[imageTag.mediaTags addObject:unitTagCopy];
[imageTag.allTags addObject:unitTagCopy];

Вы должны добавить метод createCopy.Я полагаю, это может быть:

-(id) createCopy {
    MyObj* obj = [[[MyObj] init] alloc] autorelease];
    obj.title= self.title;
    obj.link= self.link;
    obj.description= self.description;
    obj.price= self.price;
    obj.imageLink= self.imageLink;
    return obj;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...