Это все о дополнительных вызовах функций.
Объекты могут быть разработаны для необязательного вызова методов в других объектах. Некоторые из этих необязательных методов могут быть сгруппированы в шаблон делегирования.
Делегат - это просто другой объект, который хочет вызываться этими методами. Когда вы устанавливаете делегата, вы сообщаете вызывающему объекту, что кто-то хочет быть вызванным (принять опцию), и кому звонить («делегат»), когда опция появляется.
Если никто не хочет быть делегатом, то вызывающий объект с опцией, как правило, будет просто вести себя по умолчанию. Таким образом, этот шаблон («делегирование») является хорошим способом изменения значений по умолчанию, но это не обязательно, и не требует создания большого количества подклассов (что, по мнению некоторых людей, может привести к путанице быстрее).
Вот еще один Ответ переполнения стека о делегатах , я дал немного назад.
См. Документация Apple по этим шаблонам проектирования.