我有一个具有一些功能的抽象视图控制器。一些视图控制器将扩展抽象控制器并覆盖某些功能。当任何视图控制器覆盖它们时,我需要强制执行某些函数,以调用super。
答案 0 :(得分:1)
我建议您制作公开方法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()