В Swift протокол может объявлять как сигнатуры методов, так и предоставлять реализацию по умолчанию для этих методов через расширения (protocol extensions).
Наиболее распространенный способ предоставить тело функции для метода, объявленного в протоколе:
swift
Тип (класс, структура или перечисление), который соответствует протоколу, должен предоставить собственную реализацию для каждого метода, объявленного в протоколе, если протокол не предоставляет реализацию по умолчанию или если требуется иная логика.
swift
Выбор способа реализации зависит от того, является ли логика метода специфичной для каждого типа, соответствующего протоколу, или может быть общей для всех типов (с возможностью переопределения).