鉴于这两个协议及其扩展:
protocol FirstDelegate {
func someFunc()
}
protocol SecondDelegate {
func someFunc()
}
extension FirstDelegate {
func someFunc() {
print("First delegate")
}
}
extension SecondDelegate {
func someFunc() {
print("Second delegate")
}
}
Run Code Online (Sandbox Code Playgroud)
并试图符合他们两个:
class SomeClass: FirstDelegate, SecondDelegate {}
Run Code Online (Sandbox Code Playgroud)
我收到编译时错误:
类型'SomeClass'不符合协议'FirstDelegate'
交换FirstDelegate和SecondDelegate:
class SomeClass: SecondDelegate, FirstDelegate {}
Run Code Online (Sandbox Code Playgroud)
产生逆转:
类型'SomeClass'不符合协议'SecondDelegate'
删除其中一个扩展可以解决问题.同上提供someFunc()内部实现SomeClass.
这个协议扩展功能对我来说相当新.苹果官方的"Swift编程指南(Prerelease)"中有关它的信息目前还很少.
我在这里违反了一些协议扩展规则吗?