这是我在做什么:
[imageTag.mediaTags addObject:unitTag];
[imageTag.allTags addObject:unitTag];
unitTag.title=@"";
unitTag.link=@"";
unitTag.description=@"";
unitTag.price=@"";
unitTag.imageLink=@"";
问题是,一旦我执行了第2行之后,存储在数组中的值也会丢失(我使用GDB进行打印并弄清楚了)。现在的事情是,我正在重用unitTag对象输入一些信息,并将该信息保存在数组中。那我有什么选择呢?我需要删除这些值,因为某些值是可选的,并且我不想弄乱。
谁能让我知道吗?谢谢。
最佳答案
如果我理解正确,则需要制作一个UnitTag对象的副本并将其插入到数组中。您只是将对象引用存储在数组中,然后取消引用所使用的值。addObject
不存储副本-它存储实际的对象引用。
要进行复制,您需要创建一个新的单位标记为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;
}