Учитывая два протокола и их расширения:
protocol FirstDelegate {
func someFunc()
}
protocol SecondDelegate {
func someFunc()
}
extension FirstDelegate {
func someFunc() {
print("First delegate")
}
}
extension SecondDelegate {
func someFunc() {
print("Second delegate")
}
}
и попытаться соответствовать их обоим:
class SomeClass: FirstDelegate, SecondDelegate {}
Я получаю ошибку времени компиляции:
Тип "SomeClass" не соответствует протоколу "FirstDelegate"
Обмен FirstDelegate
и SecondDelegate
:
class SomeClass: SecondDelegate, FirstDelegate {}
производит обратное:
Тип "SomeClass" не соответствует протоколу "SecondDelegate"
Удаление одного из расширений устраняет проблему. То же самое обеспечивает реализацию someFunc()
внутри SomeClass
.
Эта функциональность расширения протокола для меня довольно нова. Кроме того, информация о нем в официальном "Руководстве по быстрому программированию" (Prerelease) в Apple пока мало.
Я нарушил некоторые правила расширений протокола здесь?