我正在读马克·达尔林普的《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/