我有一个自定义类" MyTask"从其他类调用,如class" ViewController"。内部" MyTask"我有功能" startTask"这需要参数来启动NSTimer来执行函数" doStuff" 但是当我使用函数startTask并为其他函数设置选择器时它会崩溃
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]
我做错了什么?
答案 0 :(得分:1)
要成为选择器目标的类必须派生自NSObject。你在这里使用的是Objective-C功能;你必须有一个与Objective-C兼容的类。