我查看了Declarations in extensions cannot override yet error in Swift 4
就我而言:
我有如下的BaseViewController:
class BaseViewController: UIViewController {
func extFunction() {
print("extFunction")
}
}
拥有另一个视图控制器
class TestViewController : BaseViewController {
override func extFunction() { // getting error in this line
print("extFunction from TestViewController")
}
}
更新 - 我现在已将其更改为:
class BaseViewController: UIViewController {
func extFunction() {
print("extFunction")
}
}
拥有另一个视图控制器
class TestViewController : BaseViewController {
override func extFunction() { // getting error in this line
print("extFunction from TestViewController")
}
}
任何帮助都将不胜感激。
答案 0 :(得分:3)
错误信息非常清楚(尽管有些可疑的语法):
扩展声明无法覆盖
您无法覆盖在扩展程序中声明的函数('然而这意味着在未来的Swift版本中可能会这样)。
如果您希望能够覆盖extFunction
,则必须在BaseViewController
本身声明,而不是在扩展程序中声明。
答案 1 :(得分:0)
(糟糕的)解决方法是在BaseViewController中声明另一个函数
func altExtFunc() {
print("overridable extFunction")
}
并将extFunction更改为
func extFunction() {
altExtFunc()
}
然后在TestViewController中
override func altExtFunc() {
super.altExtFunc()
// more stuff here
}