是否可以在接口声明中声明一个超类链?

时间:2010-09-19 19:51:22

标签: iphone objective-c ipad inheritance

这可能是一个愚蠢的问题,但我没有找到任何相关信息。

假设我程序中的几个类派生自'MySubView',它来自另一个类UIViewController。

我会这样声明:

@interface NewViewController : MySubView {
    // code ...
}
@end

将来客户希望进行更改,并希望使用表格查看另一个视图。所以我需要创建另一个名为MySubTableView的类,它是一个从MySubView子类化的UITableViewController。

我认为如果我可以这样做会更容易:

@interface NewViewController : UITableViewController : MySubView {
    // code ...
}
@end

但这不起作用。

有没有办法用Xcode做到这一点,还是我必须专门制作这个类?

编辑:

我不是在寻找多重继承。直接继承层次结构如下:

NewViewController
的UITableViewController
MySubView
UIViewController

2 个答案:

答案 0 :(得分:2)

不,Objective-C不支持声明那种(垂直)继承链。您只能指定直接超类。

即使有可能,也会出现调用正确的初始值设定项等问题,因为它们不会自动调用。考虑像A : B : C这样的层次结构 - 现在您可以使用例如B初始化[super init]A初始值设定项中的B,但C如何知道您希望它为{{1}}调用的初始值设定项?

答案 1 :(得分:1)

Objective-C不支持多重继承...但Objective-C程序员很少会错过它,因为您可以使用Categories来完成许多相同的任务。阅读Objective-C类别。