继承两个类

时间:2011-05-29 15:58:25

标签: iphone objective-c ipad uiviewcontroller subclass

我正在创建一个通用的iOS应用程序,即它将在iPhone和iPad上运行。我现在有一个UIViewController将显示在两者上,但不同。在iPhone上,它将包含一个UITableView,在iPad上AQGridView。数据将是相同的。因此,两个控制器将共享许多方法和实例变量。

通常,我会用我的方法和实例变量创建一个UIViewController子类,然后创建这个类的两个子类,我在那里放置特定于设备的东西。

我现在面临的问题是我的子类的iPhone版本还应该使用一些不错的方法从其他类继承:

            UIViewController sublcass                   Some Other Class
                        |                                      |
            -------------------------------    -----------------
            |                             |    |
      iPad sublcass                 iPhone subclass

由于iPhone sublcass旨在与Some Other Class一起使用,因此无法将iPad版本添加为UITableView的子类。

我很确定在Objective-C中这是不可能的,但我想在开始之前先询问并创建一个巨大的复制和混乱。那么:关于如何保持我的代码简单的任何建议?

1 个答案:

答案 0 :(得分:2)

是的,目标C中不可能进行多重继承。但是,通过简洁的逻辑设计,它不是必需的,可以用协议替换。但是,如果情况并非如此(但我对此有疑问),建议您查看decorator design pattern

即使装饰器模式不符合您的需求,我建议您使用聚合而不是继承(好吧,这就是装饰器实际使用的)。