我试图调用 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”按钮时停止计时器。但是,它出错了:
无法识别的选择器发送到实例...
and
libc++abi.dylib:以 NSException 类型的未捕获异常终止
我是 Swift 新手,其他看起来与此类似的 StackOverflow 问题并不能解决我的问题。我尝试过更改“计时器!” “定时器”可选?并将“Selector("processTimer")”更改为“#selector(processTimer)”,但我仍然无法使其工作。
回调函数processTimer
未正确声明:
@objc func processTimer() {
//your code here
}
您需要添加@objc函数之前的关键字,以便在函数中调用Timer
打回来。
另外,一般来说我认为更好使用#selector
关键字代替。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)