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