0

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

我错过了什么?

4

3 回答 3

3

默认情况下一个类不符合NSObjectProtocol,这会导致错误。

改变

protocol NavigationDelegate: NSObjectProtocol

protocol NavigationDelegate: class
于 2018-01-12T13:53:51.153 回答
2

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

于 2018-01-12T13:54:39.850 回答
0

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

希望这对将来的人有所帮助

于 2018-01-12T14:14:10.387 回答