Делегирование с применением или без необходимости реализации протокола. В чем причина? - PullRequest
1 голос
/ 03 сентября 2011

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

Иногда объект делегата должен реализовывать протокол, иногда нет.Например, если вы хотите отобразить UIAlertView, вы создаете его, указав delegate как себя.Затем класс, вызывающий UIAlertView, должен реализовать протокол UIAlertViewDelegate.

Если вы создаете другие классы, например NSUrlConnection, с сообщением connectionWithRequest:delegate:, вы назначаете делегата, который получитсообщения делегата, отправленные с NSUrlConnection в ходе соединения, но объект, назначенный делегатом, не должен реализовывать протокол.

Я что-то упустил?Как я понимаю, когда я должен реализовать протокол?Всегда ли это ясно из справочника API, как для UIAlertViewDelegate?

Я заметил, что ссылка UIAlertView представляет только методы экземпляра и говорит вам, что вы должны реализовать протокол UIAlertViewDelegate, в то время как NSUrlConnection не говорит о протоколах для реализации, но у него есть делегатраздел методов.

Может NSUrlConnection быть определен как класс UIAlertView, без методов делегата, но с протоколом NSUrlConnectionDelegate.

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

1 Ответ

0 голосов
/ 03 сентября 2011

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

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

Разница в том, требуется ли поведение по умолчанию.

...