Что означает obj.delegate = self? - PullRequest
2 голосов
/ 04 марта 2011

Что на самом деле означает установить делегат текстового поля?

Например: txtField.delegate = self

Ответы [ 7 ]

6 голосов
/ 11 октября 2012

"Короче говоря, вы получаете вызовы от txtField. Вы устанавливаете объект 'self' в качестве делегата для txtField."

"Это означает, что ваш txtField будет получать события от самого себя

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

По сути, один - вызывающий абонент, а получатель. Подумайте об этом, как повар на кухне зовет своего помощника нарезать лук. В данном конкретном случае txtField - это шеф-повар, а self - помощник. txtField заказывает сам "Делай это, это и это!" Нравится вам это или нет, но помощник должен обязать его кормить жену и детей. :)

3 голосов
/ 04 марта 2011

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

2 голосов
/ 04 марта 2011

Короче говоря, вы получаете звонки из txtField.Вы устанавливаете объект 'self' в качестве делегата для txtField.

1 голос
/ 04 марта 2011

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

Если класс имеет строку кода, например: textfield.delegate = self; затем он говорит, что этот объект в этом классе хочет вызвать, чтобы обработать настройку текстового поля для определенных методов делегата текстового поля.

1 голос
/ 04 марта 2011

Делегирование - это шаблон программирования, который широко используется в Objective-C.

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

1 голос
/ 04 марта 2011

Это означает, что ваш 'txtField' будет получать события от самого себя (какой-то странный пример, может быть, может быть предоставлен больший раздел исходного кода?)

0 голосов
/ 04 марта 2011

Это означает, что фактический класс, где вызывается txtField.delegate = self, будет получать обратные вызовы от событий. Часто это удобный способ сделать что-то.

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