Swift从超类调用子类的重写方法

Ada*_*ans 3 polymorphism inheritance subclassing swift

我遇到一个子类的方法被调用覆盖一个方法的问题,所以我创建了一个小应用程序来测试它.当超类调用其子类重写的方法时,仍然会调用超类的方法版本,而不是子类的版本,它会覆盖超类的方法,应该是被调用的方法.

预期产量: sub foo

实际产量: super foo

超类:

class ViewController: UIViewController
{
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
    {
        foo()
    }

    func foo()
    {
        println("super foo")
    }
}
Run Code Online (Sandbox Code Playgroud)

子类:

class SubclassViewController: ViewController
{
    override func foo()
    {
        println("sub foo")
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*huk 7

确保该对象的类是SubclassViewController。否则,它将不知道被子类重写的方法


小智 5

同样值得检查的是,您没有尝试覆盖扩展程序.由于某种原因,无法在扩展中完成覆盖.