iOS но зачем делегировать - PullRequest
1 голос
/ 04 декабря 2010

Я везде вижу в программировании iOS, что используется делегат .... Я не уверен, зачем он используется.

Не могли бы вы объяснить мне об этом?

Ответы [ 2 ]

5 голосов
/ 04 декабря 2010

Когда вам нужно, чтобы объекты вели себя по-разному, вы можете либо дать им разные реализации (часто с помощью подклассов, как это делается с UIViewController), либо путем делегирования. Разница заключается в том, что полиморфизм в первом случае достигается созданием объектов различного типа , тогда как во втором полиморфизм достигается созданием объектов одного типа делегировать определенные функциональные биты объектам произвольного типа.

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

Если вы хотите знать механизм делегирования и как это делать в своих собственных классах, вы можете прочитать мою статью Использование пользовательских делегатов в Objective-C .

1 голос
/ 04 декабря 2010

Это все о дополнительных вызовах функций.

Объекты могут быть разработаны для необязательного вызова методов в других объектах. Некоторые из этих необязательных методов могут быть сгруппированы в шаблон делегирования.

Делегат - это просто другой объект, который хочет вызываться этими методами. Когда вы устанавливаете делегата, вы сообщаете вызывающему объекту, что кто-то хочет быть вызванным (принять опцию), и кому звонить («делегат»), когда опция появляется.

Если никто не хочет быть делегатом, то вызывающий объект с опцией, как правило, будет просто вести себя по умолчанию. Таким образом, этот шаблон («делегирование») является хорошим способом изменения значений по умолчанию, но это не обязательно, и не требует создания большого количества подклассов (что, по мнению некоторых людей, может привести к путанице быстрее).

Вот еще один Ответ переполнения стека о делегатах , я дал немного назад.

См. Документация Apple по этим шаблонам проектирования.

...