嗨,我有一个数组,我试图复制它然后从中删除一个元素。问题是我认为我正在从副本中删除元素,但它也会从原始数组中删除元素。我不知道发生了什么。我是目标 c 的新手,所以任何帮助都将不胜感激。
NSArray *newarray = appDelegate.orginalArray;
[newarray removeObjectAtIndex: 2];
当我在删除对象后查看数组时,它已经从 newarray 和 orginalArray 中删除了它,为什么会这样?
非常感谢
嗨,我有一个数组,我试图复制它然后从中删除一个元素。问题是我认为我正在从副本中删除元素,但它也会从原始数组中删除元素。我不知道发生了什么。我是目标 c 的新手,所以任何帮助都将不胜感激。
NSArray *newarray = appDelegate.orginalArray;
[newarray removeObjectAtIndex: 2];
当我在删除对象后查看数组时,它已经从 newarray 和 orginalArray 中删除了它,为什么会这样?
非常感谢
这不是复制。两者newArray
和appDelegate.originalArray
指的是同一个对象。你需要这样做:
NSMutableArray *newArray = [appDelegate.originalArray mutableCopy];
另请注意,我正在使用NSMutableArray
并mutableCopy
确保副本是可变的(即支持添加和删除项目)
指针、伙伴和可变/不可变抽象。newarray
并且appDelegate.originalArray
都是指向同一个不可变(不可更改)数组的指针(引用)。你要:
NSArray *newarray = [appDelegate.orginalArray mutableCopy];