3
私はいくつかの機能を持つ抽象ビューコントローラを持っています。一部のビューコントローラは抽象的なものを拡張し、いくつかの関数をオーバーライドします。任意のビューコントローラがsuperを呼び出すためにそれらをオーバーライドするとき、いくつかの関数を強制する必要があります。オーバーライドメソッドを強制的にSwiftのsuperを呼び出す方法はありますか?
私はいくつかの機能を持つ抽象ビューコントローラを持っています。一部のビューコントローラは抽象的なものを拡張し、いくつかの関数をオーバーライドします。任意のビューコントローラがsuperを呼び出すためにそれらをオーバーライドするとき、いくつかの関数を強制する必要があります。オーバーライドメソッドを強制的にSwiftのsuperを呼び出す方法はありますか?
パブリックメソッドfinal
を作成し、抽象クラスで何もしないで公開final
メソッドで呼び出される空のinternal
メソッドを公開することをお勧めします。
このような何か:
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()