В документах Apple для делегирования указано:
Как в Swift, так и в Objective-C делегирование часто выражается протоколом, который определяет взаимодействие и соответствующее свойство делегата.
Я не знаю другого способа создания делегатов, которые не "должны" включать протокол. Есть ли другой способ выражения делегирования в Swift или Objective-C, не связанный с протоколом?