多个计时器同时ios

时间:2018-02-11 17:47:32

标签: ios swift timer nstimer

我正在创建一个应用程序,用户可以同时使用多个计时器并在列表视图中查看它们。

我知道有两个主要的时间选择:

  • 减去从当前日期(当前日期 - 开始日期)开始的日期

  • 使用NSTimer,每秒从每个活动计时器中取走1秒钟。

我以前一直在使用后者,但是在浏览互联网时我开始认为数据可能更好。

请您告诉我您认为最适合使用的内容,如果您选择了第一个(日期),请提供一些有关如何使用它的示例代码。

2 个答案:

答案 0 :(得分:1)

你们两个都使用。你有一个Timer每秒重复一次。 Timer的处理程序然后遍历每个用户计时器的开始日期列表,并根据当前日期更新每个计时器的显示。

答案 1 :(得分:-1)

您可以使用NSTimer,每秒从每个活动计时器中取走1秒钟。你可以使用这个类。

class CustomTimer {
    typealias Update = (Int)->Void
    var timer:Timer?
    var count: Int = 0
    var update: Update?

    init(update:@escaping Update){
        self.update = update
    }
    func start(){
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerUpdate), userInfo: nil, repeats: true)
    }
    func stop(){
        if let timer = timer {
            timer.invalidate()
        }
    }
    /**
     * This method must be in the public or scope
     */
    @objc func timerUpdate() {
        count += 1;
        if let update = update {
            update(count)
        }
    }
}

要使用多个计时器,您可以创建多个CustomTimer实例,示例代码:

let timer1 = CustomTimer { (seconds) in
    // do whatever you want 
}
timer1.start()
let timer2 = CustomTimer { (seconds) in
    // do whatever you want
}
timer2.start()

注意:

timerUpdate方法将以1秒的间隔精确调用。为了保留一些执行功能的空间,我们可以根据执行时间将间隔设置为0.9或0.95。