Swift 2.0: расширения протокола: два протокола с одинаковой ошибкой компиляции сигнатуры функции
Учитывая два протокола и их расширения:
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
.
Эта функция расширения протокола является довольно новой для меня. Также информация об этом в официальном «Руководстве по программированию Swift (Prerelease)» от Apple на данный момент ограничена.
Я нарушил некоторые правила расширений протокола здесь?