NSTimer(Swift)遇到麻烦

Alt*_*nos 10 nstimer swift

- 更新信息 -

我想做的是timerFunc使用一个NSTimer.scheduledTimerWithTimeInterval方法调用一个每五秒钟命名一次的函数,问题似乎是在运行时,我得到了错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-      
[Animation.ViewController timerFunc:]: unrecognized selector sent to instance 0x7fe548d66040'
Run Code Online (Sandbox Code Playgroud)

在输出日志中.我一直在寻找其他人的NSTimers无济于事,我看到不少有选择器selector: Selector("timerFunc:")而不是selector: Selector("timerFunc")两种方式,但是,给出错误.另一件事是timerFunc函数和NSTimer都在viewDidLoad中,有什么问题吗?非常感谢对此问题的任何见解,感谢阅读.

timerFunc如下

func timerFunc(){

    println("Timer")
}
Run Code Online (Sandbox Code Playgroud)

NSTimer下面

NSTimer.scheduledTimerWithTimeInterval(
        5.0,
        target: self,
        selector: Selector("timerFunc"),
        userInfo: nil,
        repeats: true)
Run Code Online (Sandbox Code Playgroud)

Ant*_*ine 11

定时器不适用于私有方法回调.另外,请确保您的类继承自NSObject.Pure Swift类不起作用.

更多信息可以在这里找到:https://github.com/NxSoftware/NxSwiftTimer

  • 是的,这是我的问题,类需要从`NSObject`继承! (3认同)
  • NSObject的东西+500! (2认同)

vac*_*ama 9

另一件事是timerFunc函数和NSTimer都在viewDidLoad中,有什么问题吗?

是.那是你的问题.在timerFunc不能嵌套的内部viewDidLoad,它必须是在同一水平为顶级功能viewDidLoad.

class ViewController: UIViewController {

    override func viewDidLoad() {
        ....
        NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: "timerFunc", userInfo: nil, repeats: true)
    }

    func timerFunc() {
        println("Timer")
    }

}
Run Code Online (Sandbox Code Playgroud)

当计时器触发时,它将调用目标指定的对象上的选择器指定的函数.也就是说,它会打电话self.timerFunc().当你timerFunc()的内部嵌套时ViewDidLoad,它找不到它.