Прикладное делегирование и протоколы - PullRequest
0 голосов
/ 11 марта 2010

Я пытаюсь выяснить причину, почему я должен узнать эти вещи о делегатах и ​​протоколах. Сначала я подумал, что это необходимо для того, чтобы создать красивый (э) дизайн кода. Затем я начал читать, и я не могу найти причины, которые, как я думал, я собирался найти (то есть "хорошие" причины ...).

Когда мне следует применять делегатов и протоколы? Практические примеры из реальной жизни или просто хорошие примеры были бы полезны (я знаю особенности протоколов и делегатов, по крайней мере, в некоторой степени, поэтому объяснять это не нужно).

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 11 марта 2010

Некоторые лучшие примеры можно найти в рамках Какао.

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

Документы Apple хорошо читаются: Шаблоны проектирования Какао: Делегирование

0 голосов
/ 11 марта 2010

Они великолепны, когда один класс должен сказать другому, что что-то произошло, и он должен что-то сделать.

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

0 голосов
/ 11 марта 2010

Еще один хороший ресурс, с которым я недавно столкнулся, - это курс по разработке приложений для iPhone в Стэнфордском университете, доступный бесплатно через iTunesU (http://itunes.stanford.edu/).). В лекции 7 они обсуждают некоторые рекомендации по написанию ваших контроллеров представления и представляют концепции делегирования. и протоколы.

0 голосов
/ 11 марта 2010

Использование протоколов - это указание интерфейса для делегатов.

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

...