gpt4 book ai didi

ios - 插入一个数组会影响另一个数组吗?

转载 作者:行者123 更新时间:2023-12-01 18:48:10 25 4
gpt4 key购买 nike

我有 2 NSMutableArray .我正在向其中添加自定义类对象。我已经将它们初始化如下。

 arr_post=[[NSMutableArray alloc]init];
copy_arr_user_post=[[NSMutableArray alloc]init];

我像这样将对象添加到它们中。
for(i=0;i<[arr_main count];i++)
{
Post *obj=[[Post alloc]init];
obj.name=@"abc";
obj.gender=@"male";
[arr_post addObject:obj];
[copy_arr_user_post addObject:obj];

}

现在,当我从 arr_post 中删除对象时& 再次插入,然后它也会在另一个数组中生效。
Post *post=[arr_post objectAtIndex:indexPath.row];
[arr_post removeObjectAtIndex:indexPath.row];
post.name=@"def";
[arr_post addObjectAtIndex:indexPath.row];

然后 def也被添加到第二个数组中。

最佳答案

您误解了数组的工作原理。

数组存储对对象的引用,而不是对象本身。这有点像保留人们的电话号码。如果我有一个包含 10 个电话号码的列表,而您有相同的电话号码列表,并且我列表中索引 1 的人移动到一个新地址,当您调用索引 1 的人并询问他们的地址时,他们会给出你也改变了地址。

两个数组都指向相同的对象。

如果更改其中一个对象的设置,则在任一数组中查找对象时都会看到这些更改。

如果您希望您的数组包含独立对象,则在您的自定义类中实现 NSCopying 并使用如下代码:

for(i=0;i<[arr_main count];i++)
{
Post *obj=[[Post alloc]init];
obj.name=@"abc";
obj.gender=@"male";
[arr_post addObject:obj];
Post objectCopy = [obj copy]; //create a copy of our object
[copy_arr_user_post addObject: objectCopy]; //insert copy into other array
}

但同样,要做到这一点,您需要教您的自定义 Post 类符合 NSCopying协议(protocol),以便它理解 copy信息。查看 NSCopying 上的文档协议(protocol)以获取更多信息。

关于ios - 插入一个数组会影响另一个数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33279297/

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