我收到了这个Swift错误:
Method不会覆盖其超类中的任何方法!
为什么会出现这种情况?相关代码如下:
class TouchyView: UIView {
override func touchesBegan(touches: NSSet?, withEvent event: UIEvent) {
updateTouches(event.allTouches())
}
override func touchesMoved(touches: NSSet?, withEvent event: UIEvent) {
updateTouches(event.allTouches())
}
override func touchesEnded(touches: NSSet?, withEvent event: UIEvent) {
updateTouches(event.allTouches())
}
override func touchesCancelled(touches: NSSet!!, withEvent event: UIEvent) {
updateTouches(event.allTouches())
}
var touchPoints = [CGPoint]()
func updateTouches( touches: NSSet? ) {
touchPoints = []
touches?.enumerateObjectsUsingBlock() { (element,stop) in
if let touch = element as? UITouch {
switch touch.phase {
case .Began, .Moved, .Stationary:
self.touchPoints.append(touch.locationInView(self))
default:
break
}
}
}
setNeedsDisplay()
}
答案 0 :(得分:1)
继承:如果你有一个带方法的类
class myClass {
func abc () {
// do something
}
你创建了另一个继承自第一个的类:
class myOtherClass :myClass {
// do whatever stuff in this class
}
第二个类也将拥有第一个类的abc方法。 但是,如果您希望在第二个类中更改abc的功能,则必须使用
倍率
关键字。
class myOtherClass :myClass {
override func abc () {
// do something else
}
// do whatever stuff in this class
}
很好,swift让你添加覆盖关键字,你不会意外地覆盖第一个类的方法(如果名称非常通用,通常会发生这种情况)。
如果方法在第一个类中不存在,则不能使用覆盖(并且它没有用)。这就是你的情况。
希望这有帮助,如果不清楚,我建议你阅读一本关于面向对象编程的书