iPhone init方法返回类型

时间:2010-03-19 22:39:52

标签: iphone initialization

假设我们正在iPhone程序中编写一个类(我们称之为Class)。在那里的所有样本中,init方法通常声明如下:

-(id) initWithFoo: (Foo *) foo

我的问题是:执行以下操作会更合乎逻辑吗?为什么或为什么不呢?

-(Class *) initWithFoo: (Foo *) foo

1 个答案:

答案 0 :(得分:3)

Mac Dev Center上的Implementing an Initializer

  

这样做的原因是id表示该类是故意不被考虑的 - 该类是未指定的并且可能会发生变化,具体取决于调用的上下文。例如,NSString提供了一个方法initWithFormat:。但是,当发送到NSMutableString(NSString的子类)的实例时,该消息返回NSMutableString的实例,而不是NSString。 (另请参阅“组合分配和初始化”中给出的单例示例。)