我正在读马克·达尔林普的《Mac上的学习目标C》(仅在协议一章中读过,所以还是比较生疏)并试图找出一些答案:
你为什么要引用一个类的名字?如果我有一门课叫Foo,为什么我要写,比如说,

[[Foo alloc] init]

而不是
[[[self class] alloc] init]

如果我有一个子类条,第一个选项是否会使我无法编写
[[Bar alloc] init]

而第二种选择会允许吗?什么时候第一个选择会更好?

最佳答案

通常,在类方法中,您使用的是[[self alloc] init]。例如,为类编写方便方法的规范方法是:

+ (id)fooWithBar:(Bar *)aBar
{
    return [[[self alloc] initWithBar:aBar] autorelease];
}

(注意,在类方法中,self引用类对象。)
但是,如果您实际需要[[Foo alloc] init]类的实例(而不是子类),则可以使用Foo(即显式类名)。

关于objective-c - 为什么使用[ClassName alloc]而不是[[self class] alloc]?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3559763/

10-14 22:11