while循环没有用计时器执行

时间:2018-04-01 00:58:15

标签: ios swift timer

我对Swift很新,现在已经练习了一周左右。我已经声明了一个计时器,我用viewDidLoad()调用了计时器的函数,并且计时器#selector指向goldPerSec,该函数是一个简单的while循环,但它并没有执行每一个第二应该。

这是我的代码:

var timer = Timer()

override func viewDidLoad() {
    super.viewDidLoad()
    counter()
}

func counter() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.goldPerSec), userInfo: nil, repeats: true)
}

@objc func goldPerSec() {
    while (totalOwned >= 1) {
        Gold += (minerOwned * 1)
        goldLabel.text = "\(Gold)"
    }
}

1 个答案:

答案 0 :(得分:1)

while中的goldPerSec循环永远运行,阻止任何其他代码在主队列上运行,包括计时器。

while循环更改为if语句。

@objc func goldPerSec() {
    if totalOwned >= 1 {
        Gold += minerOwned * 1
        goldLabel.text = "\(Gold)"
    }
}

现在允许从计时器每秒调用goldPerSec,并允许其余的用户界面工作。

作为旁注,变量名称应以小写字母开头,因此Gold应命名为gold