ios - 具有约束的 Swift 协议(protocol)扩展不会使类符合该协议(protocol)

标签 ios swift swift2

我现在正在学习一些使用 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) ActivityIndi​​cable。你能解释一下这是为什么吗?它应该“使用”受限于 UIViewController 的扩展,不是吗?

最佳答案

这是一个简单的错字:

func dispayActivityIndicator() {

您在“显示”中删除了“l”。

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

注意:协议(protocol)需要类型为“() -> ()”的函数“displayActivityIndi​​cator()”

如果不是,则可能表明您有其他错误。

关于ios - 具有约束的 Swift 协议(protocol)扩展不会使类符合该协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34977030/

相关文章:

objective-c - NSPredicate 中的多个条件

html - Xcode 发现字符串中 HTML 代码的语法错误

swift - MFMailComposeResult 常量不能在 Swift 2.3 中编译

iOS KVO - 检测何时再次设置相同的值

ios - Swift 2.1 中的嵌套闭包

ios - 在 Swift 中为包含嵌套对象的对象实现深度复制的正确方法?

ios - IOS标签标题,顶部没有图标空白

ios - Facebook Graph API 更改了今天的结果/帖子?

ios - Swift - Realm 移动平台今日扩展

ios - faSTLane 构建问题 - 双倍路径名