【发布时间】:2015-10-13 17:30:14
【问题描述】:
鉴于这两个协议及其扩展:
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”
删除其中一个扩展程序可以解决问题。同样在SomeClass 中为someFunc() 提供实现。
这个协议扩展功能对我来说相当新。此外,Apple 官方的“Swift Programming Guide (Prerelease)”中有关它的信息目前也很少。
我在这里违反了一些协议扩展规则吗?
【问题讨论】:
-
你想达到什么目的?您希望
SomeClass().someFunc()调用这两种方法中的哪一种? -
我在玩协议扩展及其语法。借此,我试图了解他们的规则和行为。
-
@mesmerizingsnow 好吧,两个协议拥有完全相同的方法并没有什么意义,那么你就不需要两个协议,因为它们是一样的......