Совместная реализация нескольких интерфейсов в target-c - PullRequest
0 голосов
/ 05 января 2019

Мне нужно реализовать два интерфейса, GLView и MetalView:

  • GLView - это подкласс NSOpenGLView (то есть, в свою очередь, подкласс NSView).
  • MetalView является прямым подклассом NSView.

Большая часть реализации разделена между GLView и MetalView, и я, очевидно, не хочу копировать-вставлять это. В c ++ у меня был бы класс шаблона BaseViewImpl, который бы принимал параметр шаблона BaseView, и я бы использовал BaseViewImpl<NSOpenGLView> в качестве базового класса для GLView и BaseViewImpl<NSView> в качестве базы для MetalView.

Как мне достичь того же в цели c?

1 Ответ

0 голосов
/ 05 января 2019

Самый простой способ - просто поместить общий код в свой собственный объект, и каждый из GLView и MetalView владеет экземпляром этого объекта. Вы можете создать протокол, который реализуют оба представления, чтобы дать им одинаковый интерфейс. Внутренне они будут передавать общие запросы на принадлежащий им объект.

...