我的单例类中有一个名为NSMutableArray
的{{1}},它包含我的应用程序主数据源。
playersArray
的每个对象都是playersArray
,内容如下:
NSDictionary
{
sgfID = 1;
sgfPlayer = "<PlayerContact: 0xbf851b0>";
}
是一个PlayerContact
子类,包含以下属性:
NSString * playerName,playerTeam,BOOL PlayerSelected等。
在我的一个ViewControllers中,在NSObject
中,我想将viewDidLoad
的深层副本复制到名为playersArray
的{{1}}。我这样做是
NSMutableArray
现在我有两个单独的副本,我的印象是playersArray和duplicatePlayersArray是内存中两个完全不同的数组。但是我发现它们不是!
即使调试器显示它们具有不同的内存地址,它们的内容也具有相同的内存地址。所以当我这样做时:
duplicatePlayersArray
playerArray在索引处的字典:0在上面的代码行运行之前已经使用“333”作为关键字“sgfID”而不是“1”。
但是,如果我运行以下代码,那么两个数组开始不同
playersArray = [[SGFHelper sharedHelpers] SGFContactsArray];
duplicatePlayersArray = [playersArray mutableCopy];
这仍然没有解决我的问题,因为我想要相信的两个阵列仍然是“连接”的。一次更改会导致另一个数组更改其内容。
请各位朋友请给我一个深刻的方法复制数组我解释了内容,其中所有内容都保存在不同的对象中。
答案 0 :(得分:10)
使用initWithArray:copyItems:
复制数组中的每个条目
NSMutableArray *duplicatePlayersArray = [[NSMutableArray alloc] initWithArray:playersArray copyItems:YES];