0

嗨,我有一个数组,我试图复制它然后从中删除一个元素。问题是我认为我正在从副本中删除元素,但它也会从原始数组中删除元素。我不知道发生了什么。我是目标 c 的新手,所以任何帮助都将不胜感激。

NSArray *newarray = appDelegate.orginalArray;

[newarray removeObjectAtIndex: 2];

当我在删除对象后查看数组时,它已经从 newarray 和 orginalArray 中删除了它,为什么会这样?

非常感谢

4

2 回答 2

2

这不是复制。两者newArrayappDelegate.originalArray指的是同一个对象。你需要这样做:

NSMutableArray *newArray = [appDelegate.originalArray mutableCopy];

另请注意,我正在使用NSMutableArraymutableCopy确保副本是可变的(即支持添加和删除项目)

于 2012-05-10T18:07:33.780 回答
0

指针、伙伴和可变/不可变抽象。newarray并且appDelegate.originalArray都是指向同一个不可变(不可更改)数组的指针(引用)。你要:

NSArray *newarray = [appDelegate.orginalArray mutableCopy];
于 2012-05-10T18:08:51.393 回答