方法与超类中的方法冲突 - 覆盖给出错误 [重复]
Posted
技术标签:
【中文标题】方法与超类中的方法冲突 - 覆盖给出错误 [重复]【英文标题】:Method conflicts with Method from Superclass - Override gives error [duplicate] 【发布时间】:2015-11-12 18:38:03 【问题描述】:我有class Menu: SKScene
,然后是func touchesBegan
,这给了我以下错误:
使用 Objective-C 选择器 'touchesBegan:withEvent:' 的方法 'touchesBegan(:withEvent:)' 与具有相同目标的超类 'UIResponder' 的方法 'touchesBegan(:withEvent:)' 冲突-C 选择器
无论如何,如果我在函数前面添加覆盖,它会说:
方法不会覆盖其超类中的任何方法。
有什么想法吗?整个代码:
import SpriteKit
class Menu: SKScene
var title : SKLabelNode?
var start : SKLabelNode?
override func didMoveToView(view: SKView)
backgroundColor = SKColor.whiteColor()
self.title = SKLabelNode(fontNamed: "Chalkduster")
self.start = SKLabelNode(fontNamed: "Chalkduster")
self.title!.name = "title"
self.start!.name = "new"
self.addChild(self.title!)
self.addChild(self.start!)
func touchesBegan(touches: NSSet, withEvent even: UIEvent)
self.menuHelper(touches)
func menuHelper(touches: NSSet)
for touch in touches
let nodeAtTouch = self.nodeAtPoint(touch.locationInNode(self))
if nodeAtTouch.name == "title"
print("Title pressed")
else if nodeAtTouch.name == "new"
print("Start pressed")
【问题讨论】:
【参考方案1】:此方法的签名(来自文档)是...
func touchesBegan(_ touches: Set<UITouch>, withEvent event: UIEvent?)
touches
是 UITouch
对象的 Set
(不是 NSSet
),event
是可选的 UIEvent
。
你还需要覆盖它...
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
self.menuHelper(touches)
【讨论】:
非常感谢!仍在学习基础知识。以上是关于方法与超类中的方法冲突 - 覆盖给出错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 touchesBegan:错误 - 方法不会覆盖超类中的任何方法
在java中,我们可以通过传递超类方法中使用的参数的子类来覆盖方法吗?