Существуют ли другие виды использования протокола, кроме делегата? - PullRequest
0 голосов
/ 23 сентября 2011

Мне просто интересно, есть ли другие способы использования протокола, кроме делегата? Я только видел, что протокол использовался в качестве делегатов, но я не заметил, имеет ли он какую-либо другую цель. Так есть ли реальные цели протокола кроме делегата?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Из яблочных документов:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html

Протоколы объявляют методы, которые могут быть реализованы любым классом. Протоколы полезны как минимум в трех ситуациях:

  • Чтобы объявить методы, которые другие должны реализовать
  • Чтобы объявить интерфейс к объекту, скрывая его класс
  • Чтобы зафиксировать сходство между классами, которые не связаны иерархически

В частности, в качестве примера я также использовал протоколы для реализации модели провайдера, в которой я абстрагирую полные части системы. Например, чтобы разделить мой код немного больше, я мог бы создать поставщика данных. У меня мог быть провайдер sqlite, провайдер файлов и т. Д. Протокол позволяет мне их отделить.

В этом случае каждый из провайдеров не наследует друг друга, но все они реализуют один и тот же шаблон с различными внутренними компонентами. Думайте о протоколе как о шаблоне, которому вы соответствуете - или о контракте, если вы думаете о нем как об интерфейсе.

Надеюсь, это поможет.

1 голос
/ 23 сентября 2011

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

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