gpt4 book ai didi

ios - 请帮助解决双重 NSMutableArray 问题

转载 作者:行者123 更新时间:2023-11-28 21:41:10 26 4
gpt4 key购买 nike

我在 NSMutableArray 上发现了一个非常奇怪的问题。首先,我创建了 1 个 NSMutableArray (arrA) 并向其添加对象。然后我创建另一个 NSMutableArray (arrB)。

然后我将 arrA 添加到 arrB。最后,当我更新 arrB 中的数据时,arrA 也会更新。代码如下

[arrA addObjectsFromArray:dataBack];

[arrB removeAllObjects];
[arrB addObjectsFromArray:arrA];

在这个 for 循环之后我发现数据 arrAarrB 一样变化

for (int i = arrB.count-1; i >= 0; i--) {
if (itemExLong > 0 && [[[arrB objectAtIndex:i] objectForKey:@"IM_QtyPriceEx"] doubleValue] > itemExLong)
{
itemExLong = [[[arrB objectAtIndex:i] objectForKey:@"IM_QtyPriceEx"] doubleValue] + itemExLong;
itemTaxLong = [[[arrB objectAtIndex:i] objectForKey:@"IM_QtyTax"] doubleValue] - itemTaxLong;
data = [arrB objectAtIndex:i];
[data setValue:[NSString stringWithFormat:@"%0.2f",itemExLong] forKey:@"IM_PriceEx"];
[data setValue:[NSString stringWithFormat:@"%0.2f",itemTaxLong] forKey:@"IM_QtyTax"];

[arrB replaceObjectAtIndex:i withObject:data];
break;
}
}

当我replaceObjectAtIndex时,我发现arrA数据改变了。请帮忙。

最佳答案

两个数组都包含指向相同底层对象的指针。因此,如果您将使用任何数组中的指针更改对象,它将更改对象(而不是指针),并且该对象对于两个数组都是相同的。如果要保留对象的不同副本,请在操作对象之前创建对象的副本。

如果您有自定义类,那么您可以通过实现 NSCopying 协议(protocol)添加复制功能,以了解更多关于 NSCopying 的信息

关于ios - 请帮助解决双重 NSMutableArray 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993623/

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