2010-03-11 4 views
0

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

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

Заранее благодарен!

ответ

0

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

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

2

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

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

яблока документов являются хорошо читать: Cocoa Design Patterns: Delegation

0

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

0

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

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

+0

Но этого легко достичь, создав свойство, которое вы связываете с другим объектом, не так ли? Какая польза от этого? – Nicsoft

+1

Это правда, что другой класс может получить доступ к значению свойства, но не существует способа, чтобы свойство уведомляло другой класс о том, что его значение изменилось или что произошло другое событие. – blindjesse

+0

Не могли бы вы привести хороший пример, когда это может понадобиться? – Nicsoft

Смежные вопросы