gpt4 book ai didi

objective-c - Objective-c 中变量的一些问题

转载 作者:行者123 更新时间:2023-11-29 05:03:32 26 4
gpt4 key购买 nike

这就是我正在做的事情:

    [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;
}

关于objective-c - Objective-c 中变量的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com