Swift 3计时器不发射



我一直在尝试使用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() {
    }
}

最新更新