如何强制覆盖方法在Swift中调用super?

时间:2016-04-13 13:18:48

标签: swift

我有一个具有一些功能的抽象视图控制器。一些视图控制器将扩展抽象控制器并覆盖某些功能。当任何视图控制器覆盖它们时,我需要强制执行某些函数,以调用super。

1 个答案:

答案 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()