我正在创建一个通用的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中这是不可能的,但我想在开始之前先询问并创建一个巨大的复制和混乱。那么:关于如何保持我的代码简单的任何建议?
答案 0 :(得分:2)
是的,目标C中不可能进行多重继承。但是,通过简洁的逻辑设计,它不是必需的,可以用协议替换。但是,如果情况并非如此(但我对此有疑问),建议您查看decorator design pattern。
即使装饰器模式不符合您的需求,我建议您使用聚合而不是继承(好吧,这就是装饰器实际使用的)。