使用 mutableCopy 复制 NSMutableArray 显然会创建该数组的物理新副本。这一点的证据是使用 removeObjectAtIndex 从副本中删除元素不会从原始元素中删除元素。但是,如果副本中的元素发生更改,则原始元素中的元素也会更改。这就像光的光子既是粒子又是波一样直观,我不明白。请有人可以向我解释一下。
代码如下。
NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:
[NSMutableString stringWithString:@"one"],
[NSMutableString stringWithString:@"two"],
[NSMutableString stringWithString:@"three"],
[NSMutableString stringWithString:@"four"],
nil];
NSMutableArray *dataArray2;
NSMutableString *mstr;
dataArray2 = [dataArray mutableCopy];
[dataArray2 removeObjectAtIndex:0];
mstr = [dataArray2 objectAtIndex:0];
[mstr appendString:@"ONE"];
NSLog(@"Data Array: ");
for (NSString *elem in dataArray) {
NSLog(@"%@",elem);
}
NSLog(@"Data Array2: ");
for (NSString *elem in dataArray2) {
NSLog(@"%@",elem);
}