我对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)"
}
}
答案 0 :(得分:1)
while
中的goldPerSec
循环永远运行,阻止任何其他代码在主队列上运行,包括计时器。
将while
循环更改为if
语句。
@objc func goldPerSec() {
if totalOwned >= 1 {
Gold += minerOwned * 1
goldLabel.text = "\(Gold)"
}
}
现在允许从计时器每秒调用goldPerSec
,并允许其余的用户界面工作。
作为旁注,变量名称应以小写字母开头,因此Gold
应命名为gold
。