首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[MyClass alloc]和[[self class] alloc]之间有什么区别?

[MyClass alloc]和[[self class] alloc]之间有什么区别?
EN

Stack Overflow用户
提问于 2009-08-15 21:26:30
回答 1查看 1.2K关注 0票数 10

我为何不这样做,是否有充分的理由呢?示例:

我有一堂MyClass课。在这里,我有这样的实现:

代码语言:javascript
复制
- (id)copyWithZone:(NSZone*)zone {
    MyClass *copy = [[MyClass allocWithZone:zone] init];
    copy.someproperty = [[self.someproperty copy] autorelease];
    return copy;
}

取而代之的是,我找到了一个看起来像这样的片段:

代码语言:javascript
复制
- (id)copyWithZone:(NSZone*)zone {
    MyClass *copy = [[[self class] allocWithZone:zone] init];
    copy.someproperty = [[self.someproperty copy] autorelease];
    return copy;
}

区别在于,第一个类只使用名称,如果它自己的类具有可读性,就像它是任何其他类一样。第二个人问自己那是什么类。这会有什么区别吗?还是在这种情况下两者都可以使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-15 21:31:02

如果您是MyClass子类,那么-copyWithZone:的第二个示例返回子类的一个实例。第一个例子没有,它返回MyClass的一个实例。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1282880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档