默认协议实现导致 'does not conform to protocol' 错误

Default protocol implementation causes 'does not conform to protocol' error

我正在尝试将默认实现添加到我的委托方法之一。但是,在添加默认实现并从实现协议的 class 中删除方法后,出现 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
}

我错过了什么?

一个class默认不符合NSObjectProtocol,导致错误。

改变

protocol NavigationDelegate: NSObjectProtocol

protocol NavigationDelegate: class

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

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

希望这对以后的人有所帮助