我有一个抽象的视图控制器,其中包含一些函数。一些视图控制器将扩展抽象视图控制器并覆盖一些函数。当任何视图控制器覆盖这些函数时,我需要强制某些函数调用super。
我有一个抽象的视图控制器,其中包含一些函数。一些视图控制器将扩展抽象视图控制器并覆盖一些函数。当任何视图控制器覆盖这些函数时,我需要强制某些函数调用super。
我建议您将公共方法设为final
,并在抽象类中暴露空的internal
方法,在公共final
方法中调用这些方法。就像这样:
class AbstractViewController {
internal func willDoStuff() {
}
internal func didDoStuff() {
}
final public func doStuff() {
willDoStuff()
// Do the stuff
didDoStuff()
}
}
class RealViewController : AbstractViewController {
override internal func willDoStuff() {
print("Will do stuff")
}
}
let viewController = RealViewController()
viewController.doStuff()