如何初始化默认的类集群子类?

时间:2014-02-09 04:08:11

标签: ios objective-c

我有一个我要聚类的课程

CCluster(公众面孔)

将CCluster子类化的隐藏工作者 CInternalMutable:CCluster
CInternalFoo:CCluster

所以我希望CCluster的默认init返回CInternalMutable
但是在CInternalMutable中我想调用[super init]但是我们有一个循环......

与CInternalFoo几乎相同的问题,它将初始化CInternalMutable然后丢弃它

那么如何初始化我的CInternalMutable类?

现在我只是不调用[super init],因为CCluster是一个继承自NSObject的“抽象”类

1 个答案:

答案 0 :(得分:0)

坦率地说,你所做的只是错误的编程实践。抽象类不应该有它们的实例,所以你不应该有一个返回它的子类的默认init方法。但是,如果你真的想这样做,你有两个选择。我更喜欢的是创建另一个initInit函数,它是defaultInit或类似于抽象类的函数,或者你可以说if([self class] == [CCluster class])能够判断是否或者不是呼叫者是正确的班级。