我现在正在学习一些使用 Swift 的 P.O.P(面向协议(protocol)编程)。我创建了带有扩展名的协议(protocol):
protocol ActivityIndicable {
func displayActivityIndicator()
func hideActivityIndicator()
}
extension ActivityIndicable where Self: UIViewController {
func dispayActivityIndicator() {
//display
}
func hideActivityIndicator() {
//hide
}
}
现在我有了一些 View Controller ,比如说 MyViewController:
class MyViewController: UIViewController, ActivityIndicable {
}
在编译过程中,我收到警告,指出 MyViewController
不符合协议(protocol) ActivityIndicable
。你能解释一下这是为什么吗?它应该“使用”受限于 UIViewController
的扩展,不是吗?
最佳答案
这是一个简单的错字:
func dispayActivityIndicator() {
您在“显示”中删除了“l”。
但是你应该得到一个更具体的警告:
注意:协议(protocol)需要类型为“() -> ()”的函数“displayActivityIndicator()”
如果不是,则可能表明您有其他错误。
关于ios - 具有约束的 Swift 协议(protocol)扩展不会使类符合该协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34977030/