SWIFT中无法识别的选择器错误
我有一个自定义类“MyTask”,它可以从其他类(如类“ViewController”)调用。在“MyTask”中,我有一个函数“startTask”,它接受启动NSTimer以执行函数“doStuff”所需的参数 但是,当我使用startTask函数并为其他函数设置选择器时,它会崩溃SWIFT中无法识别的选择器错误,swift,function,class,selector,nstimer,Swift,Function,Class,Selector,Nstimer,我有一个自定义类“MyTask”,它可以从其他类(如类“ViewController”)调用。在“MyTask”中,我有一个函数“startTask”,它接受启动NSTimer以执行函数“doStuff”所需的参数 但是,当我使用startTask函数并为其他函数设置选择器时,它会崩溃 class MyTask { var timer = NSTimer() var timerInterval = 0.0 var targ
class MyTask {
var timer = NSTimer()
var timerInterval = 0.0
var target: AnyObject!
var selector = Selector()
func startTask(time: Double, target target: AnyObject, selector: Selector) {
self.timerInterval = time
self.target = target
self.selector = selector
doStuff()
}
func doStuff() {
//....some code here to run
//====Crash happens on this line=====
self.timer = NSTimer.scheduledTimerWithTimeInterval(self.timerInterval, target: self, selector: self.selector, userInfo: nil, repeats: true)
}
在我的另一节课上,我就是这样做的
class ViewController {
let mynewClass = MyTask()
mynewClass = startTask(2, target: self, selector_: #selector(updateLabel))
func updateLabel() { print("") }
}
我收到错误***NSForwarding:警告:类“abc”的对象0x7fe90242f6f0未实现methodSignatureForSelector:--前面有问题
无法识别的选择器-[.abc timerAction]
我做错了什么?作为选择器目标的类必须派生自NSObject。这里使用的是Objective-C特性;您必须有一个Objective-C兼容的类。您应该以大写字母开头命名所有类。除了@LeoDabus所说的以外,您还不应该在参数名后面附加“\u1”。相反,请使用普通参数名称。然后在初始化器或方法的实现中,使用
self.
设置与参数同名的属性,如下所示:self.target=target
Leo,abc只是一个示例。。