相关疑难解决方法(0)

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")
    }
}
Run Code Online (Sandbox Code Playgroud)

并试图符合他们两个:

class SomeClass: FirstDelegate, SecondDelegate {}
Run Code Online (Sandbox Code Playgroud)

我收到编译时错误:

类型'SomeClass'不符合协议'FirstDelegate'

交换FirstDelegateSecondDelegate:

class SomeClass: SecondDelegate, FirstDelegate {}
Run Code Online (Sandbox Code Playgroud)

产生逆转:

类型'SomeClass'不符合协议'SecondDelegate'

删除其中一个扩展可以解决问题.同上提供someFunc()内部实现SomeClass.

这个协议扩展功能对我来说相当新.苹果官方的"Swift编程指南(Prerelease)"中有关它的信息目前还很少.

我在这里违反了一些协议扩展规则吗?

swift swift2

20
推荐指数
1
解决办法
4060
查看次数

标签 统计

swift ×1

swift2 ×1