带约束的Swift协议扩展不会使类符合该协议

时间:2016-01-24 14:37:39

标签: ios swift swift2

我现在正在使用Swift学习一些P.O.P(面向协议的编程)。我已经创建了带扩展名的协议:

protocol ActivityIndicable {
    func displayActivityIndicator()
    func hideActivityIndicator()
}

extension ActivityIndicable where Self: UIViewController {
    func dispayActivityIndicator() {
        //display
    }

    func hideActivityIndicator() {
        //hide
    }
}

现在我有一些视图控制器,让我们说MyViewController:

class MyViewController: UIViewController, ActivityIndicable {
}

在编译过程中,我收到警告MyViewController不符合协议ActivityIndicable。你能解释一下为什么吗?它应该"使用"约束UIViewController的扩展名,不应该吗?

1 个答案:

答案 0 :(得分:2)

这是一个简单的拼写错误:

func dispayActivityIndicator() {

你放弃了" l"在"显示"。

但你应该得到一个更具体的警告:

note: protocol requires function 'displayActivityIndicator()' with type '() -> ()'

如果您不这样做,则可能表示您还有其他错误。