我正在尝试调用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)”,但我仍然无法正常工作。
答案 0 :(得分:0)
未正确声明回调函数processTimer
:
@objc func processTimer() {
//your code here
}
您需要在函数之前添加 @objc 关键字,以便在Timer
回调中进行调用。
另外,一般来说,我认为最好使用#selector
关键字。