问题描述
|
我正在创建一个通用的iOS应用,即它将在iPhone和iPad上运行。我现在有一个“ 0”,将同时显示在两者上,但有所不同。在iPhone上,它将包含
UITableView
,在iPad上将包含AqgridView
。数据将是相同的。因此,两个控制器将共享许多方法和实例变量。
通常,我会使用方法和实例变量创建一个UIViewController
子类,然后创建该类的两个子类,并在其中放置特定于设备的内容。
我现在面临的问题是,我的子类的iPhone版本也应该使用一些不错的方法从另一个类继承:
UIViewController sublcass Some Other Class
| |
------------------------------- -----------------
| | |
iPad sublcass iPhone subclass
无法将iPad版本作为ѭ5的子类添加,因为Some Other Class
被设计为与ѭ1一起使用。
我很确定这在Objective-C中是不可能的,但是我想问一遍,然后再创建一个巨大的复制粘贴粘贴混乱。因此:关于如何使我的代码保持简单的任何建议?
解决方法
是的,在目标C中不可能实现多重继承。但是,通过简洁而合理的设计,这是不必要的,可以用协议代替。但是,如果不是这种情况(但是,对此我有一些疑问),建议您检查装饰器的设计模式。
即使装饰器模式无法满足您的需求,我还是建议您使用聚合而不是继承(嗯,这就是装饰器实际使用的)。