3

通常,作为一个优秀的 Cocoa 公民,我编写了返回类型id(即指向泛型对象的指针)的初始化程序,以便以后进行子类化(尽管 99% 的时间我不需要它)。

现在我正在创建自己的类集群(许多私有类都以单个公共类为上限)。问题:我是否还需要将私有类的初始化程序定义为返回通用id指针:

- (id)initSubclassForFooClassCluster;

或指向私有类本身的指针,例如:

- (SubclassForFooClassCluster *)initSubclassForFooClassCluster;
4

1 回答 1

1

您可以在您的 init 方法中使用 (id) ,声明更具体的类型不会为您做太多。如果你真的想让你的私有子类私有,你应该使用id,否则你会在不需要信息的时候向外界泄露你的类的内部信息,这取决于你需要什么。

NSString 是一个类簇,它的所有 init 方法都返回 id,因为同一个方法可能返回不同的对象类型,具体取决于您传递给 init 方法的内容。

于 2011-09-08T21:45:07.383 回答