Протокол похож на интерфейс.Если вы пришли из JAVA или C #, вы уже видели это в действии.Это просто список методов без реализации.Класс может (или не может) соответствовать определенному протоколу.Класс должен реализовывать методы, помеченные как необходимые.Те, которые являются опциональными, не могут быть реализованы.
Вместо этого делегирование представляет собой шаблон, который создает отношения между двумя различными объектами.Одному из них, скажем, A, помогает второй, скажем, B. Иными словами, B что-то делает для A.
Отношения между ними заключаются в том, что методы делегата (для определенного класса) перечислены впротоколы.Здесь термин «протокол делегата».
Почему делегирование важно?В какой-то момент жизненного цикла вашего приложения, если класс отправляет сообщение своему делегату (это не ноль), и он реализует определенный метод (он может ответить на этот селектор), сообщение получает его делегат.На этом этапе управление перехватывается делегатом, который выполняет некоторые вычисления и, возможно, может вернуть некоторый результат.
Надеюсь, это поможет.