Как достичь смешанного или характерного поведения в Objective C? - PullRequest
0 голосов
/ 27 марта 2012

Это происходило дважды или трижды в одном проекте. Требованием было наличие определенной функциональности в одном viewController, а затем эта функция была перемещена в другой viewController.

Я сделал протокол, в котором были объявлены эти функции, но это не сильно помогает. Каждый раз, когда меняется требование, мне приходится копировать и вставлять все реализации методов из одного файла в другой, а затем объявлять этот протокол из одного заголовочного файла в другой.

Есть ли способ, которым я могу иметь реализацию в одном месте, а затем просто каким-то образом смешать ее с одним классом, а затем легко удалить, добавить ее в другой класс, например, ruby ​​mixins или, если уж на то пошло, черты в Scala?

1 Ответ

1 голос
/ 12 апреля 2012

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

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

Если вам нужна такая же реализация протокола для классов, которые не происходят от UIViewController, тогда вам действительно нужно что-то вроде Ruby Mixin. В этом случае см. этот вопрос , описывающий, как использовать пересылку сообщений. И этот вопрос содержит некоторую информацию в ответах.

Соответствующий выбор зависит от набора классов, которые нуждаются в вашей реализации. Если это необходимо в некоторых, но не во всех классах UIViewController, используйте подкласс. Если это необходимо во всех классах UIViewController, но не в других, используйте категорию. В противном случае используйте пересылку сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...