Swift 4:计时器崩溃-无法识别的选择器已发送到实例

时间:2018-07-02 21:40:27

标签: ios swift timer unrecognized-selector

我正在尝试调用Timer实例,并在经过的每一秒中显示“一秒钟过去”。我正在关注Udemy上的“完整的iOs 11和Swift开发人员”课程。讲师完全做到了这一点,他的代码可以正常工作,但是我的崩溃了。

代码如下:

var timer: Timer! = Timer()

@IBAction func cameraPressed(_ sender: Any) {
    timer.invalidate()
}

func processTimer() {
    print("A second has passed")
}

override func viewDidLoad() {
    super.viewDidLoad()

    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: Selector("processTimer"), userInfo: nil, repeats: true)

它应在运行应用程序时启动计时器,然后在我按cameraPressed按钮时将其停止。但是,它的错误之处在于:

  

无法识别的选择器已发送到实例...

  

libc ++ abi.dylib:以类型为NSException的未捕获异常终止

我是Swift的新手,似乎与此类似的其他StackOverflow问题也无法解决我的问题。我尝试过更改“计时器!” “计时器?”可选并将“ Selector(” processTimer“)”更改为“ #selector(processTimer)”,但我仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

未正确声明回调函数processTimer

@objc func processTimer() {
   //your code here
}

您需要在函数之前添加 @objc 关键字,以便在Timer回调中进行调用。 另外,一般来说,我认为最好使用#selector关键字。