扩展符合协议的类?

时间:2016-04-08 09:58:00

标签: ios swift swift-protocols

如何扩展实现协议的类?

类似的东西:

protocol proto {
    func hey()
}

和符合proto的类:

Class MyClass: UIViewController, proto {
     func hey() {
         print("Hey!")
     }
}

然后是该类的扩展,如下所示:

extension UIViewController where Self:proto {
     func test() {
         print("I'm extended!")
     }
}

这样我就可以在self.test()中致电MyClass

感谢。

1 个答案:

答案 0 :(得分:3)

您可以只扩展协议,而不是类型。请尝试以下方法:

protocol proto {
    func hey()
}

class MyClass: UIViewController, proto {
    func hey() {
        print("Hey!")
    }

    func test2() {
        self.test()
    }
}

extension proto where Self: UIViewController {
    func test() {
        print("I'm extended!")
    }
}