我为何不这样做,是否有充分的理由呢?示例:
我有一堂MyClass课。在这里,我有这样的实现:
- (id)copyWithZone:(NSZone*)zone {
MyClass *copy = [[MyClass allocWithZone:zone] init];
copy.someproperty = [[self.someproperty copy] autorelease];
return copy;
}取而代之的是,我找到了一个看起来像这样的片段:
- (id)copyWithZone:(NSZone*)zone {
MyClass *copy = [[[self class] allocWithZone:zone] init];
copy.someproperty = [[self.someproperty copy] autorelease];
return copy;
}区别在于,第一个类只使用名称,如果它自己的类具有可读性,就像它是任何其他类一样。第二个人问自己那是什么类。这会有什么区别吗?还是在这种情况下两者都可以使用?
发布于 2009-08-15 21:31:02
如果您是MyClass子类,那么-copyWithZone:的第二个示例返回子类的一个实例。第一个例子没有,它返回MyClass的一个实例。
https://stackoverflow.com/questions/1282880
复制相似问题