使用新的内存分配复制NSObject

时间:2012-07-27 15:37:24

标签: objective-c memory-management nsobject

我有一个包含NSObject的NSMutableArray。我想制作它的副本但是当我修改原始数组时,副本也是如此。 我试着像这样实现copyWithZone:

-(id) copyWithZone: (NSZone *) zone

{

Play *playCopy = [[Play allocWithZone: zone] init];

[playCopy setName:name];

[playCopy setAValues:aValues];

return playCopy;

}

我在viewController中调用此函数:

NSMutableArray *aTmpPlay = [[NSMutableArray alloc] initWithArray:aPlays copyItems:YES];

我需要做什么?我怎样才能检索对象的值而不是引用?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

基本上,您仍然在分配为名称和值分配的内存的引用,因此,它仍然指向相同的对象。在分配名称和aValues之前调用副本。

[playCopy setName:[name copy]];
[playCopy setAValues:[aValues copy]];