用于撤消/重做目的的NSArray副本

时间:2014-02-25 20:55:18

标签: objective-c nsarray

如果我有一个充满自定义对象的nsarray,我使用:

创建第二个数组
NSArray *temp = [NSArray arrayWithArray:original];

然后使用原始数组中的对象的一些属性,然后决定回滚,然后我使用反向:

original = [NSArray arrayWithArray:temp];

我发现我在数组中更改的对象也影响了我的临时数组。我也尝试在我的自定义类上实现copyWithZone,并使用copyItems并没有帮助。我还应该尝试什么?

要清楚,为了使用copyWithZone,我将我的数组创建命令更改为:

NSArray *temp = [[NSArray alloc] initWithArray:original copyItems:YES];

我的copyWithZone:

-(id)copyWithZone:(NSZone *)zone{
    CustomObject *ret = [[CustomObject allocWithZone: zone] init];
    //copy properties
    return ret;
}

0 个答案:

没有答案