Пустой протокол может быть полезен, если вы хотите создать простой способ добавления stati c функций или переменных в несколько различных классов. Конечно, это имеет смысл, только если функциональность stati c одинакова для всех классов, соответствующих протоколу.
Вот пример: у меня большой протокол. Каждый класс, соответствующий Sizeable, расширяется с помощью переменной шага и размера stati c.
protocol Sizeable { }
extension Sizeable {
static var size: Int {
return MemoryLayout<Self>.size
}
static var stride: Int {
return MemoryLayout<Self>.stride
}
}
class Foo: Sizeable {}
class Baa: Sizeable {}
Foo.size
Baa.size