Является ли делегат в Objective-C классом, полным слушателей событий? - PullRequest
1 голос
/ 06 февраля 2011

Определен ли делегат в Objective-C как класс, полный прослушивателей событий для объекта?

Ответы [ 2 ]

6 голосов
/ 06 февраля 2011

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

Например, вместо того, чтобы создавать подклассы NSWindow для обеспечения настраиваемого поведения при изменении размера, вы просто реализуете несколькометоды где-то в классе и использовать экземпляр этого класса в качестве делегата.Поскольку такая реализация обычно зависит от информации уровня управления или уровня модели, гораздо более естественно использовать класс уровня управления в качестве делегата, а не подкласса NSWindow, и не загрязнять объекты уровня представления функциональностью уровня управления.

Под прикрытием делегаты мертво просты.При изменении размера NSWindow просто спрашивает делегата: «Отвечаете ли вы на метод windowWillResize:toSize: и, если он это делает, вызывает его в нужное время; в этом нет ничего, кроме objc_msgSend ().

0 голосов
/ 06 февраля 2011

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

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