定时器过早停止

时间:2017-08-09 21:49:22

标签: ios swift timer

我试图让倒数计时器停止并在计时器达到0时在视图控制器上显示游戏。它倒计时.1。问题是,当计时器为2.0时,它会停止并在屏幕上显示游戏。我不知道为什么会这样,因为' if'声明代码说if seconds & milliseconds == 0应该有效,并在倒计时到达0时在屏幕上显示游戏。

var timer = Timer()
var seconds = 2
var milliseconds = 0

timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(SecondViewController.countDownfunction), userInfo: nil, repeats: true)

func countDownfunction() {

    time.text = "Time: " + "\(seconds).\(milliseconds)"

    if milliseconds == 0 {

        seconds -= 1
        milliseconds = 10
    } else {
        milliseconds -= 1
  }
    if seconds & milliseconds == 0 {

        timer.invalidate()

        performSegue(withIdentifier: "showGameOver", sender: self)
    }
}

2 个答案:

答案 0 :(得分:1)

if seconds & milliseconds == 0 {更改为:

if seconds == 0 && milliseconds == 0 {

&是一个按位AND运算符:link

在1和10上执行按位AND计算:0001& 1010 = 0并将结果与​​0进行比较,因此在这种情况下调用if子句。

编辑:改变条件以适应&&操作者...

答案 1 :(得分:1)

这是因为代码正在评估秒和时间。首先是毫秒,得到一个假的答案,它等于0,所以它返回true并显示游戏结束。 相反,

if(seconds == 0 && milliseconds == 0)
{

}