Xcode 7.3/Swift 2:"没有用Objective-C选择器声明的方法"警告

tom*_*Dev 44 nstimer swift

我一直在使用选择器,甚至在迁移到Swift之后我能够毫无问题地使用它们.这就是我在Swift 2上使用的方式没有问题,直到我将Xcode更新到7.3版:

在此输入图像描述

正如使用可以看到我使用选择器与NSTimer.

这是被称为的动作:

 func Start () {

 }
Run Code Online (Sandbox Code Playgroud)

如您所见,Xcode 7.3现在发出警告"没有用Objective-C选择器声明的方法".通过单击警告,Xcode通过添加"Selector"快速修复代码,但我仍然得到相同的警告:在此输入图像描述

ogr*_*res 89

从Swift 2.2/Xcode 7.3开始,有一种使用选择器的新方法: Selector("funcName")改为#selector(ClassName.funcName)

看看https://github.com/apple/swift-evolution/blob/master/proposals/0022-objc-selectors.md,

TL;博士;

替换Selector("Start")#selector(YOUR_CLASS.Start)

其中YOUR_CLASS =给定上下文中的目标类.

如果你不想手动操作,默认情况下Xcode提供了简单的修复,当你遇到以下情况时,点击黄色三角形(有时需要点击/点击多次),

在此输入图像描述

它会给你建议: 在此输入图像描述

如果您选择该建议,它将自动更新选择器: 在此输入图像描述

  • 这种方式好得多,不会因拼写错误而崩溃 (2认同)