我正在尝试将数组复制到另一个数组,我的代码位于
之下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中的更改我不想要。
请说明哪种方法正确
答案 0 :(得分:5)
问题是,你创建了一个“浅”副本。你想要的是一个“深层”副本:
NSArray *deepCopyArray=[[NSArray alloc] initWithArray:someArray copyItems:YES];
或
NSArray* trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:
[NSKeyedArchiver archivedDataWithRootObject:oldArray]];
您可以在Mac Developer Library的Copying Collections找到更多相关信息。