我需要实现两个接口GLView
和MetalView
:
GLView
是NSOpenGLView
的子类(又是NSView
的子类)。MetalView
是NSView
的直接子类。大多数实现在GLView
和MetalView
之间共享,我显然不想复制粘贴该实现。
在c ++中,我将有一个模板类BaseViewImpl
,它将使用模板参数BaseView
,并且我将BaseViewImpl<NSOpenGLView>
用作GLView
和BaseViewImpl<NSView>
的基类的基础
MetalView
。
如何在目标c中实现相同目标?
答案 0 :(得分:0)
最直接的方法是将通用代码放入其自己的对象中,并使GLView
和MetalView
各自拥有该对象的实例。您可以创建两个视图都实现的协议,以为其提供相同的接口。在内部,他们会将通用请求传递到他们拥有的对象上。