在问这个问题之前,我已经阅读了许多 SO 帖子,我猜这个答案就在某个地方,但我没有看到。我是 Objective-C 的新手,我正在尝试做一个我无法弄清楚的(看似)简单的动作。
一般的想法是我有一个NSArray
填充对象(特别是 type UIImageView
)。我想复制那个数组,我已经做了很多方法(都成功)。
复制后,我现在有两个数组。我想修改一个对象,比如索引 2,只在副本中。
到目前为止,似乎因为副本只是复制引用(或指针),所以更改索引 2 处的对象将同时更改副本和原始对象。
那有意义吗?
NSArray *originalArray = @[object1, object2];
我尝试复制此数组的方式,以便实现我想要的:
NSMutableArray *originalArrayCopy = [NSMutableArray arrayWithArray:originalArray];
NSArray *originalArrayCopy = [originalArray copy];
NSMutableArray *originalArrayCopy = [[NSMutableArray alloc] initWithArray:originalArray];
而且似乎在每种情况下,从副本修改对象也会在原始对象中修改它。
注意:虽然NSArray
显然是不可变的,但我原始数组中的对象是可变的。