Протоколы и делегаты часто встречаются вместе. Это помогает понять, какой протокол является первым.
Протокол
Протокол - это способ дать классу обещание реализовать стандартный набор методов.
Пример. Сертифицированный электрик обладает определенным набором навыков, которым обладают все сертифицированные электрики. Если вам нужно, чтобы кто-то сделал что-то, что сертифицированный электрик сертифицировал, то любой сертифицированный электрик должен быть в состоянии сделать это (по крайней мере, в теории).
Делегирование
Теперь делегат - это объект, на который возложена ответственность за выполнение определенных требований. Один объект может получить ответственность за удовлетворение потребности другого объекта.
Пример: при строительстве дома в доме должны быть проложены провода и т. Д. Эта ответственность была возложена на сертифицированного электрика, и мы знаем, что он может сделать это, потому что он сертифицирован (т.е. реализует определенный протокол).
Собираем все вместе в контексте Какао:
A UITableView
нужны ячейки, чтобы они могли отображать их. Чтобы предоставить ячейки, необходимо создать класс (или, по крайней мере, указать), который реализует протокол UITableViewDataSource
. Это гарантирует, что класс делает все необходимое, чтобы снабдить UITableView
необходимыми ячейками.
Таким образом, UITableView
делегирует ответственность за предоставление ячеек определенному объекту класса, который реализует протокол , который гарантирует, что объект знает, как предоставить необходимые ячейки.
Пример