ayt*_*nch 1 arrays iphone objective-c deep-copy ios
我在我的单例类中有一个NSMutableArray调用playersArray,它为我的应用程序主数据源保存.每个对象playersArray都是a NSDictionary,内容如下:
{
sgfID = 1;
sgfPlayer = "<PlayerContact: 0xbf851b0>";
}
Run Code Online (Sandbox Code Playgroud)
PlayerContact是一个NSObject包含以下属性的子类:NSString*playerName,playerTeam,BOOL PlayerSelected等.
在我的一个ViewControllers中viewDidLoad,我想把一个深入的副本playersArray带到一个NSMutableArray命名的duplicatePlayersArray.我是这样做的
playersArray = [[SGFHelper sharedHelpers] SGFContactsArray];
duplicatePlayersArray = [playersArray mutableCopy];
Run Code Online (Sandbox Code Playgroud)
现在我有两个单独的副本,我的印象是playersArray和duplicatePlayersArray是内存中两个完全不同的数组.但是我发现它们不是!
即使调试器显示它们具有不同的内存地址,它们的内容也具有相同的内存地址.所以当我这样做时:
[((NSMutableDictionary *)[duplicatePlayersArray objectAtIndex:0]) setObject:@"333" forKey:@"sgfID"];
Run Code Online (Sandbox Code Playgroud)
playersArray的索引字典:0在上面的代码行运行之前已经使用了"333"作为关键字"sgfID"而不是"1".
但是,如果我运行下面的代码,那么两个数组开始不同
[duplicatePlayersArray replaceObjectAtIndex:0 withObject:tempDict];
Run Code Online (Sandbox Code Playgroud)
这仍然没有解决我的担忧,因为我想要相信的两个阵列仍然是"连接"的.一次更改会导致另一个数组更改其内容.
请各位朋友请给我一个深入复制数组的方法我解释了内容,其中所有内容都保存在不同的对象中.
Dav*_*unt 10
使用initWithArray:copyItems:每个条目阵列中的复制
NSMutableArray *duplicatePlayersArray = [[NSMutableArray alloc] initWithArray:playersArray copyItems:YES];
Run Code Online (Sandbox Code Playgroud)