默认协议实现导致 '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
所属的目标不同。只需将扩展程序移动到同一目标即可。
希望这对以后的人有所帮助
我正在尝试将默认实现添加到我的委托方法之一。但是,在添加默认实现并从实现协议的 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
所属的目标不同。只需将扩展程序移动到同一目标即可。
希望这对以后的人有所帮助