代码之家  ›  专栏  ›  技术社区  ›  just_another_coder

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

  •  0
  • just_another_coder  · 技术社区  · 15 年前

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

    假设我的程序中有几个类是从另一个类uiviewcontroller派生的“mysubview”派生的。

    我宣布如下:

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

    将来,客户机希望进行更改,并希望使用另一个带有表的视图。因此,我需要创建另一个名为mySubTableView的类,它是一个从mySubView子类化的UITableViewController。

    我想如果我能做这样的事情会更容易些:

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

    但这不管用。

    有没有一种方法可以使用Xcode来实现这一点,或者我需要专门创建类本身?

    编辑:

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

    新建视图控制器
    uiTableView控制器
    我的子视图
    ui视图控制器

    2 回复  |  直到 15 年前
        1
  •  2
  •   Georg Fritzsche    15 年前

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

    即使这是可能的,也会有一些问题,比如调用正确的初始值设定项,因为它们不会被自动调用。考虑像 A : B : C -现在可以初始化 B 使用例如 [super init] 在里面 A 初始值设定项,但如何 知道你想要它调用什么初始值设定项 C ?

        2
  •  1
  •   Kaelin Colclasure    15 年前

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