如何从多个超类继承自定义类?

tod*_*412 9 inheritance uiviewcontroller ios

我有一个iPhone应用程序,其中A类是UIViewController的子类:

在此输入图像描述

现在我正在创建一个新的应用程序,其中我想重用A,但是它有B的子类,这很好,因为来自UIViewController的B子类:

在此输入图像描述

但是现在我有另一个类C,它是GLKViewController的子类:

在此输入图像描述

当我尝试制作第三个重复使用B而不做任何更改的应用程序时,问题就来了.由于B继承自UIViewController,我需要以某种方式告诉C它应该继承自B GLKViewController,我认为这是多重继承的情况:

在此输入图像描述

从我正在阅读的内容来看,处理这个问题的最好方法是使用构图,但我不明白如何最好地将它应用到我的情况中.

作为一个替代解决方案,我意识到我可以创建一个包装器D,然后我可以逐个app地修改它从适当的超类继承用于手头的任务:

在此输入图像描述

在此输入图像描述

但这看起来有点像hacky.有一个更好的方法吗?

小智 7

Objective C仅支持单继承.在这种情况下,您可能希望使用协议来实现常见功能.您可以使用辅助对象来实现协议方法.在这种情况下,您不关心对象是否是特定类的成员,而是它是否实现了一组特定的方法.