此代码在XCode 6中没有错误,但在XCode 7(Swift 2)中发生了此错误:

方法不会重写其超类中的任何方法

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        /* Called when a touch begins */

}

删除override字时发生此错误:

方法"TouchesStart(:withEvent:)' with Objective-C selector 'touchesBegan:withEvent:' conflicts with method 'touchesBegan(:withEvent:)"来自超类"UIResponder",使用相同的Objective-C Select 器

推荐答案

出现第一个错误是因为Cocoa Touch的大部分内容都经过了审核,以支持Objective-C泛型,这意味着现在可以键入数组和集合之类的元素.因此,该方法的签名发生了变化,由于您编写的内容不再与此匹配,因此会出现一个错误,说明您已将一个方法标记为override,但它实际上与超类中的任何方法都不匹配.

然后,当你删除override关键字时,你得到的错误是让你知道你做了一个Objective-C Select 器与real Touchs Begined方法冲突的方法(与Swift不同,Objective-C不支持方法重载).

最重要的是,在Swift 2中,你的touch 应该是这样的.

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    // stuff
}

有关Objective-C泛型对您的Swift代码意味着什么的更多信息,我建议您查看预发布版本Using Swift with Cocoa and Objective-C中的轻量级泛型部分.截至目前,第33页&;34

Swift相关问答推荐

是否有一个Kotlin等价的Swift s @ AddendableReport注释'

避免嵌套导航TabView

传递给SWIFT ResultBuilder的闭包中结果类型的对象

通过SwiftUI中的列表 Select 从字典中检索值

我可以在预览中通过拖动手势跳转,但在模拟器中失败

为什么枚举上的.allCases.forEach不是循环(继续和中断不起作用)?

为什么要在SWIFT RandomAccessCollection协议中重新定义元素类型?

background Task(.backgroundTask)不适用于MySQL

SWIFT`String.Encoding`:`.unicode`vs`.utf16`

String.Index encodedOffset已弃用,但建议的替代方案不起作用

SwiftUI 拖放:如果没有上下文类型,则无法解析对成员‘first’的引用

SwiftUI如何能够在Text中使用字符串字面量来创建LocalizedStringKey?

UIBezierPath() 和 DragGesture:连接点创建角而不是曲线

(Swift)混淆了函数内 for-in 循环的返回值和循环后(函数内)的返回值)

将 Encodable 扩展添加到 Swift 嵌套枚举

如何在 UITableView 中点击图片和标题

如何在 SwiftUI 中将图像传递到 2 个视图

如何使被拖动的对象成为前景(foreground)对象

subscribeOn 和 observeOn 的顺序重要吗?

如何在 SwiftUI Segmented Picker 中更改选定的段 colored颜色