我有一个我要聚类的课程
CCluster(公众面孔)
将CCluster子类化的隐藏工作者
CInternalMutable:CCluster
CInternalFoo:CCluster
所以我希望CCluster的默认init返回CInternalMutable
但是在CInternalMutable中我想调用[super init]但是我们有一个循环......
与CInternalFoo几乎相同的问题,它将初始化CInternalMutable然后丢弃它
那么如何初始化我的CInternalMutable类?
现在我只是不调用[super init],因为CCluster是一个继承自NSObject的“抽象”类
答案 0 :(得分:0)
坦率地说,你所做的只是错误的编程实践。抽象类不应该有它们的实例,所以你不应该有一个返回它的子类的默认init方法。但是,如果你真的想这样做,你有两个选择。我更喜欢的是创建另一个initInit函数,它是defaultInit或类似于抽象类的函数,或者你可以说if([self class] == [CCluster class])能够判断是否或者不是呼叫者是正确的班级。