【发布时间】:2015-08-19 21:28:03
【问题描述】:
我在调用子类的方法时遇到了一个问题,它覆盖了一个方法,所以我创建了一个小应用程序来测试它。当超类调用其子类覆盖的方法时,仍会调用超类的方法版本,而不是子类的版本,子类的版本会覆盖超类的方法,应该是被调用的方法。
预期输出:sub foo
实际输出:super foo
超类:
class ViewController: UIViewController
{
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
foo()
}
func foo()
{
println("super foo")
}
}
子类:
class SubclassViewController: ViewController
{
override func foo()
{
println("sub foo")
}
}
【问题讨论】:
-
调用 touchesBegan 的对象的类是什么?是 SubclassViewController 还是 ViewController?
-
哇,我觉得自己很愚蠢。我从未将故事板中的初始视图控制器更改为 SubclassViewController。谢谢。将您的评论作为答案。
-
我实际上在超类、ios 10、Xcode 8 中看到了选择器的这个问题
标签: swift inheritance polymorphism subclassing