3

Я кодировал некоторые вещи на objetive c .. но я все еще не понимаю, я не знаю/понимаю, что делегат вообще.Что такое делегат?

Возможно, мой основной язык программирования - это C++ и Java ... не знаю.

Я искал в Интернете в поисках объяснения АНГЛИЙСКОГО, но, кажется, я не говорить по-английски :)

ответ

3

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

There are some nice examples here on wikipedia.

+0

И нет причин, по которым у вас не может быть делегатов на C++ или Java. –

+0

Итак, когда я делаю что-то вроде myO bject.delegate = myDelegateObject, что я делаю? – Artemix

+1

Вы сообщаете myObject о вызове методов, реализуемых myDelegateObject, когда это необходимо для подачи информации или когда происходят определенные события. Эти события должны быть документированы в документах для класса myObject. myDelegateObject может также иметь другие методы и быть разработанным для выполнения других действий, помимо того, что нужно myObject в качестве делегата. –

2

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

Вот статья, которую я нашел весьма полезным, когда я начал программировать в Objective-C:

http://developer.apple.com/mac/library/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

0

Мне нравится думать, делегат как «указатель на функцию». Это восходит к C-дням, но идея по-прежнему сохраняется.

Идея состоит в том, что вы должны иметь возможность ссылаться на кусок кода, но этот фрагмент кода, который вы собираетесь вызывать, неизвестен до выполнения. Таким образом, для этой цели вы используете «делегат».

Когда объект получает запрос, объект может обрабатывать сам запрос или передать запрос второму объекту для выполнения работы. Если объект решает передать запрос, вы говорите, что объект передал ответственность за обработку запроса второму объекту.

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

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

Без делегатов невозможно программирование пользовательского интерфейса. Поскольку вы выполняете код всякий раз, когда пользователь создает события, которые нажатие кнопки, ввод текстового поля, выбор элемента списка и т. д.

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