Что такое "Делегат" в iPhone?
Каково точное значение делегата в iphone? Как он реализован в UIViewController?
Ответы
Ответ 1
Делегат - это объект, который обычно реагирует на какое-либо событие в другом объекте и/или может влиять на поведение другого объекта. Объекты работают вместе для большей пользы от выполнения задачи. Обычно объект-делегат будет разделяться многими другими объектами, для выполнения которых требуется более конкретная задача. Сам делегат будет более абстрактным и должен быть очень многоразовым для разных задач. Объект, который содержит делегат, обычно отправляет делегату сообщение при возникновении инициированного события, предоставляя делегату возможность выполнить свою заданную задачу.
Там больше документации здесь, которую вы должны прочитать, чтобы понять шаблон делегата в Cocoa и Cocoa touch, особенно с тем, как делегирование используется между UIWindow и UIView. Это интегральный шаблон дизайна в архитектуре iPhone и тот, который должен быть освоен, если вы хотите создать чистую программу.
Ответ 2
Делегаты используются для делегирования задач объектов своему владельцу (или любому объекту, действительно). Хорошей причиной для этого является упрощение использования композиции вместо наследования. Делегаты - это ссылка на объект, который соответствует указанному протоколу, поэтому вы можете гарантировать, что он выполнит требуемые методы. Хорошим примером является UIApplicationDelegate. Обратите внимание на то, как делегированные методы (из протокола) используют глаголы applicationDid, applicationShould, applicationWill и т.д. Обычно делегировать методы либо запрашивать разрешение на выполнение чего-либо (и выбирать делать это таким образом, в методе, а не только с помощью свойства BOOL, для большей гибкости) или уведомить делегата о событии, которое произойдет или произошло.
Ответ 3
Делегирование - это шаблон, и термин означает то же самое в Cocoa.
Делегат не реализован в UIViewController
. Различные типы контроллеров представлений - это assign
ed делегат для обработки определенных задач. Одним из лучших примеров (если мы говорим на iPhone) является UITableViewDelegate
, который призван делать определенные вещи, когда определенные таблицы- связанные события.
Ответ 4
Делегат используется для передачи/передачи данных по двум объектам класса/структуры для выполнения задачи.
Например: Рассмотрим firstVC (отправитель или делегат или генеральный директор), который отправляет конфиденциальные данные второму VC (получателю или делегату или секретарю).
Это делается путем создания второго VC, соответствующего
protocol passDataDelegate { func passdata(data: String) }
class secondVC : UIViewController, passDataDelegate {
func passdata(data: String) {
print("CEO passed //(data)")
}
}
class firstVC : UIViewController {
var delegate : passDataDelegate?
}
Теперь создайте объекты как firstVC, так и secondVC
let sender = firstVC()
let receiver = secondVC()
Так как приемник соответствует протоколу passDataDelegate
. Таким образом, он имеет тип либо как UIViewController
или passDataDelegate
, потому что если класс соответствует протоколу, то объект его класса может иметь протокол как тип.
Следовательно, присвойте sender.delegate = receiver
Теперь мы можем генеральному директору (отправителю) передавать данные секретарю (получателю) через его свойство делегирования как
sender.delegate?.passdata("Confidential data")
Output: CEO passed Confidential data
Теперь секретарь (получатель) может использовать эти данные для выполнения своей дальнейшей задачи.
Ответ 5
Концепция делегирования очень распространена в iOS. Объект часто полагается на другой объект, чтобы помочь ему с определенными задачами. Такое разделение проблем делает систему простой, поскольку каждый объект делает только то, что хорошо, и позволяет другим объектам заботиться обо всем остальном. Этот вид таблицы представляет собой отличный пример.