扩展符合协议的类?

Que*_*e20 5 ios swift swift-protocols

如何对实现协议的类进行扩展?

类似的东西:

protocol proto {
    func hey()
}
Run Code Online (Sandbox Code Playgroud)

以及符合以下条件的类proto

Class MyClass: UIViewController, proto {
     func hey() {
         print("Hey!")
     }
}
Run Code Online (Sandbox Code Playgroud)

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

extension UIViewController where Self:proto {
     func test() {
         print("I'm extended!")
     }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以打电话self.test()MyClass

谢谢。

Max*_*sov 5

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

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!")
    }
}
Run Code Online (Sandbox Code Playgroud)