NSCopying:使用“区域”

时间:2012-08-15 20:26:11

标签: objective-c cocoa

我的课程实现NSCopying,如下所示:

@implementation MyClass

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

    // Copy instance variables

    return copy;
}

@end

这意味着副本分配在所需的内存区域中。如果对象包含需要复制的实例变量,例如可变数组,我应该使用他们的copyWithZone:消息并传递zone,而不是仅仅调用copy吗?

此外,如果我想直接实例化实例变量而不是复制对象,我是否必须使用allocWithZone:类方法分配它们?

1 个答案:

答案 0 :(得分:1)

区域已经过时 - 没有什么特别的。如果您也复制了您的ivars,您可以放心地忽略它,只需在它们上面复制副本。