默认协议实现导致“不符合协议”错误

时间:2018-01-12 13:50:50

标签: ios swift swift-protocols protocol-oriented

我正在尝试向我的一个委托方法添加默认实现。但是,在添加默认实现并从实现协议的类中删除方法后,出现does not conform to protocol错误。它在操场上工作。

protocol NavigationDelegate: NSObjectProtocol {
    func didSetToolbarVisible(_ isVisible: Bool)
}
extension NavigationDelegate {
    func didSetToolbarVisible(_ isVisible: Bool) {
        print("Default implementation")
    }
}
class MyViewController: NavigationDelegate {
    // 'does not conform to protocol' error
}

我错过了什么?

3 个答案:

答案 0 :(得分:2)

默认情况下,某个类不符合journal_mode=DELETE,这会导致错误。

更改

NSObjectProtocol

protocol NavigationDelegate: NSObjectProtocol

答案 1 :(得分:2)

您的NavigationDelegate使用NSObjectProtocol的基本协议。这意味着符合NavigationDelegate的任何内容也必须符合NSObjectProtocol。将您的类声明更改为以下内容: class MyViewController: NSObject, NavigationDelegate

答案 2 :(得分:0)

解决了!我的NavigationDelegate及其扩展名与MyViewController所属的目标不同。只需将扩展程序移动到同一目标即可。

希望这可以帮助将来的某个人