2016-04-13 7 views
3

私はいくつかの機能を持つ抽象ビューコントローラを持っています。一部のビューコントローラは抽象的なものを拡張し、いくつかの関数をオーバーライドします。任意のビューコントローラがsuperを呼び出すためにそれらをオーバーライドするとき、いくつかの関数を強制する必要があります。オーバーライドメソッドを強制的にSwiftのsuperを呼び出す方法はありますか?

答えて

1

パブリックメソッド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() 
関連する問題