gpt4 book ai didi

Swift:延迟增加标签

转载 作者:行者123 更新时间:2023-11-30 11:43:19 25 4
gpt4 key购买 nike

当我的应用程序到达这部分代码时,它会卡住。我试图以半秒的延迟增加一个数字,然后将其打印到屏幕上。所以标签文本会变成 1,然后是 2,然后是 3,等等。我把这段代码扔进 Playground ,DispatchQueue 似乎无限上升。谢谢。

var percentage = 0

func incrementLabel (amount: Int){
var count = 0
while count <= amount{
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {
percentage += 1
count += 1
})
}
}

incrementLabel(amount: 10)
print(percentage)

最佳答案

这是您可以用来代替 DispatchQueue 的替代解决方案:

var percentage = 0
var counter = 0
var timer: Timer?

func incrementLabel(amount: Int) {
counter = amount
timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.updateDelay), userInfo: nil, repeats: true)
}

@objc func updateDelay() {
if (counter > 0) {
counter -= 1

percentage += 1
} else {
timer.invalidate()
timer = nil
}
}

incrementLabel(amount: 10)
print(percentage)

这使用了 Swift 中的Timer

关于Swift:延迟增加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100426/

25 4 0