如何将NSMutableArray复制到另一个数组?

时间:2014-05-02 08:01:04

标签: ios objective-c arrays

我正在尝试将数组复制到另一个数组,我的代码位于

之下
NSMutableArray firstArray = [[NSMutableArray alloc]init];
NSMutableArray secondArray = [[NSMutableArray alloc]init];
[firstArray addObject:@"1"];
[firstArray addObject:@"2"];
[firstArray addObject:@"3"];
[firstArray addObject:@"4"];
[firstArray addObject:@"5"];

// have tried following ways

// 1
secondArray=[firstArray copy];

// 2
[secondArray addObjectsFromArray:firstArray];

//3
secondArray = [[NSMutableArray alloc]initWithArray:firstArray];

它工作正常,但问题是当修改firstArray时它反映了secondArray中的更改我不想要。

请说明哪种方法正确

1 个答案:

答案 0 :(得分:5)

问题是,你创建了一个“浅”副本。你想要的是一个“深层”副本:

NSArray *deepCopyArray=[[NSArray alloc] initWithArray:someArray copyItems:YES];

NSArray* trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:
      [NSKeyedArchiver archivedDataWithRootObject:oldArray]];

您可以在Mac Developer Library的Copying Collections找到更多相关信息。