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

4

我有一个抽象的视图控制器,其中包含一些函数。一些视图控制器将扩展抽象视图控制器并覆盖一些函数。当任何视图控制器覆盖这些函数时,我需要强制某些函数调用super。

1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接