iGa*_*mar -1 arrays objective-c ios
我正在尝试将数组复制到另一个数组,我的代码在下面
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];
Run Code Online (Sandbox Code Playgroud)
它工作正常,但问题是,当修改firstArray时,它反映了它在secondArray中的变化,我不希望这样.
请告诉我哪个是正确的方法
问题是,你创建了一个"浅"副本.你想要的是一个"深层"副本:
NSArray *deepCopyArray=[[NSArray alloc] initWithArray:someArray copyItems:YES];
Run Code Online (Sandbox Code Playgroud)
要么
NSArray* trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:
[NSKeyedArchiver archivedDataWithRootObject:oldArray]];
Run Code Online (Sandbox Code Playgroud)
您可以在Mac Developer Library的Copying Collections中找到更多相关信息.
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |