以某种方式链接的目标c数组

时间:2012-05-10 18:04:57

标签: objective-c arrays

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

NSArray *newarray = appDelegate.orginalArray;

[newarray removeObjectAtIndex: 2];

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

非常感谢

2 个答案:

答案 0 :(得分:2)

这不是复制品。 newArrayappDelegate.originalArray都指向同一个对象。你需要这样做:

NSMutableArray *newArray = [appDelegate.originalArray mutableCopy];

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

答案 1 :(得分:0)

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

NSArray *newarray = [appDelegate.orginalArray mutableCopy];