嗨那里=)我刚刚面临一个设计问题,我需要(基本上)做以下事情:
我要注入一些代码上viewWillAppear:的任何UIViewController符合协议的子类MyProtocol.在代码中解释:
protocol MyProtocol
{
func protocolFunction() {
//do cool stuff...
}
}
extension UIViewController where Self: MyProtocol //<-----compilation error
{
public override class func initialize()
{
//swizzling stuff switching viewWillAppear(_: Bool) with xxx_viewWillAppear(animated: Bool)
}
// MARK: - Swizzling
func xxx_viewWillAppear(animated: Bool)
{
self.xxx_viewWillAppear(animated)
//invoke APIs from
self.protocolFunction() // MyProtocol APIs
let viewLoaded = self.isViewLoaded // UIViewController APIs
}
}
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是我需要UIVIewController扩展中的两件事:
MyProtocol和UIViewControllerAPIUIViewController方法initialize() …