2012-08-15 21 views
0

我的类实现NSCopying这样的:NSCopying:“区”的使用

@implementation MyClass 

- (id) copyWithZone: (NSZone *) zone { 
    MyClass *copy = [[MyClass allocWithZone: zone] init]; 

    // Copy instance variables 

    return copy; 
} 

@end 

这意味着该副本所需的内存区域的分配。如果对象包含需要复制的实例变量,例如,可变阵列,我应该使用它们的copyWithZone:消息并通过zone,而不是仅仅调用copy

此外,如果有实例变量我想直接实例化而不是复制一个对象,我将不得不通过使用allocWithZone:类方法来分配这些变量吗?

回答

1

区域已经过时 - 没有什么特别的。如果你也复制你的ivars,你可以放心地忽略它,只需要复制它们。

+0

谢谢,这似乎也是常见的看法。是否有任何官方文件来支持? – waldrumpus 2012-08-17 11:41:17

+0

@waldrumpus不客气。我相信苹果公司的文档提到它(但是很久以前我和NSCopying搞混了,所以它可能不再存在)。 – 2012-08-17 11:44:50