Swift 未调用协议扩展
Swift protocol extension not being called
我试图对协议 UIScrollViewDelegate
进行默认实现,例如:
extension UIScrollViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
//...
}
}
但在 subclass UITableViewController
中(符合 UIScrollViewDelegate
并且)不包含此方法的任何实现(既不在 base class 中也不在 subclass), 这个扩展提供的实现不会被调用
是否有任何解决方案可以为这些方法提供默认实现?
只需创建 UIScrollView
的扩展以符合 UIScrollViewDelegate
协议,如下所示:
extension UIScrollView: UIScrollViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
// ...
}
}
您正在尝试对 Objective-C 协议进行 Swift 协议扩展。这永远行不通,因为 Objective-C 无法 看到 一个 Swift 协议扩展,所以 Cocoa(即 Objective-C)永远不会了解您的实现并且永远不会调用它。
我试图对协议 UIScrollViewDelegate
进行默认实现,例如:
extension UIScrollViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
//...
}
}
但在 subclass UITableViewController
中(符合 UIScrollViewDelegate
并且)不包含此方法的任何实现(既不在 base class 中也不在 subclass), 这个扩展提供的实现不会被调用
是否有任何解决方案可以为这些方法提供默认实现?
只需创建 UIScrollView
的扩展以符合 UIScrollViewDelegate
协议,如下所示:
extension UIScrollView: UIScrollViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
// ...
}
}
您正在尝试对 Objective-C 协议进行 Swift 协议扩展。这永远行不通,因为 Objective-C 无法 看到 一个 Swift 协议扩展,所以 Cocoa(即 Objective-C)永远不会了解您的实现并且永远不会调用它。