我是 iOS 开发新手,阅读过有关该扩展的文章。但是我找不到任何关于扩展和继承扩展的例子。
取SpreadsheetView举个例子。我想覆盖 extension SpreadsheetView .
我发现我可以通过在我自己的 .swift 文件中创建另一个扩展来覆盖它:
extension SpreadsheetView {
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
// custom code
}
}
但是,我也想保留默认实现。如何从我的自定义函数中调用它? super.scrollViewDidScroll
或 (self as SpreadsheetView).scrollViewDidScroll
不起作用。
当我回到基础并复制所有代码时。它不允许。所以这对我来说不是一个选择:
'rowHeaderView' is inaccessible due to 'internal' protection level
最佳答案
您不能覆盖扩展中的任何实现。扩展用于向现有类、结构、枚举或协议(protocol)类型添加新功能。
如果你想重写任何函数,你应该重写类,然后重写方法。像这样的东西。
class MySpreadsheetView: SpreadsheetView {
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
super.scrollViewDidScroll(scrollView)
//....
}
}
关于ios - 如何覆盖和继承 Swift 中的扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45126054/