我一直在尝试使用Swift中的计时器,并且我将IT城镇简化为以下内容:
func startTimer () {
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.test), userInfo: nil, repeats: true)
}
func test () {
print("FIRED")
}
我想从另一个函数调用它,并验证了startTimer函数的作用,但是计时器不发射。这与Runloop有关吗?我是编码的新手,因此将不胜感激。
良好实践:在startTimer()中,检查是否尚未创建计时器并进行分配。在stoptimer()中,请检查计时器在调用无效之前是否存在,并将计时器设置为nil。
另外,对于选择器,请确保您具有@objc
前缀。您应该能够通过提供的代码获得一个工作计时器。愉快的编码!
class SomeClass {
var timer: Timer?
func startTimer() {
guard timer == nil else { return }
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(test), userInfo: nil, repeats: true)
}
func stopTimer() {
guard timer != nil else { return }
timer?.invalidate()
timer = nil
}
@objc func test() {
}
}