2014-02-09 73 views
0

我有,我想clusterize如何初始化一个默认的类集群子类?

CCluster(大众脸)

隐藏的工人谁是继承CCluster
CInternalMutable类:CCluster
CInternalFoo:CCluster

所以我想CCluster默认初始化返回CInternalMutable
但在CInternalMutable我想调用[超级初始化],但是我们有一个循环...

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

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

现在我只是不打电话[超级初始化]因为CCluster是一个“抽象”类,从NSObject的

回答

0

继承坦率地说什么你做的是只是坏的编程习惯。抽象类不应该有它们的实例,所以你不应该有一个默认的init方法返回它的一个子类。但是,如果你真的想这样做,你有两个选择。我更喜欢创建另一个初始化函数,它是defaultInit或类似于抽象类的东西,或者你可以像if([self class] == [CCluster class])那样说出是否能够判断是否或者不是调用者是正确的类。