Выберите тип базового класса во время выполнения, как шаблоны - PullRequest
0 голосов
/ 28 января 2011

У меня есть компонент, который используется в качестве базового класса для множества более сложных компонентов.
В настоящее время эта база наследуется от UIScrollView.

Теперь я хочу иметь альтернативное базовое представление с 99% той же функциональности, но которое будет наследоваться от UIView. В C ++ я, скорее всего, сделал бы это с помощью шаблонов, но как это можно сделать в Objective-C?

Пример:

                |-- ComplexDerivedClass_1
                |
BaseClass  -----|-- ComplexDerivedClass_2    |-- EvenMoreComplexDerived_1
                |                            |
                |-- ComplexDerivedClass_3 ---|-- EvenMoreComplexDerived_2 
                                             |
                                             |-- EvenMoreComplexDerived_3

Моя цель заключается в том, чтобы BaseClass мог наследовать либо от UIView, либо от UIScrollView, и что это будет принято во время выполнения (без создания специальных реализаций каждого производного класса для базы типов UIView или базы типов UIScrollView).

Одно из решений, конечно, состоит в том, чтобы базовый класс наследовал от UIView, и, если необходимо, добавьте в него другой UIScrollView во время выполнения, но мне интересно, можно ли это сделать без этого.

1 Ответ

0 голосов
/ 29 января 2011

Вы смотрели на протоколы? Я не очень хорош с C ++, но я думаю, что это самая близкая вещь.

...