首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >延迟的动作在10次循环后加倍。为什么会发生这种情况,我如何让它停止?

延迟的动作在10次循环后加倍。为什么会发生这种情况,我如何让它停止?
EN

Stack Overflow用户
提问于 2020-09-29 21:08:01
回答 1查看 31关注 0票数 0

我运行了一个for循环,从数组中打印出一个数字。我使用了一个延迟函数,每次将打印数字的时间延长半秒。对于前10个循环,它工作得很好,每个打印数字之间有半秒的间隔。

在它完美运行10个循环后,它将开始一次打印2个数字,在20个循环之后,它将一次打印3个。这不是我想要的,我也不确定它为什么要这样做。

这是循环和延迟函数。在循环运行之前,定时器设置为0.5。

代码语言:javascript
代码运行次数:0
运行
复制
for i in 1...30 {         
    delay(timer) {    
        print("Button \(self.newLevel[i-1].areaNumber) was lit up")
    }

    timer += 0.5
}
代码语言:javascript
代码运行次数:0
运行
复制
func delay(_ delay:Double, closure:@escaping ()->()) {
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
}

感谢您的时间/帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-09-29 23:32:29

不确定它为什么会这样的问题的实际解决方案,但我使用了一个带有计数器的计时器来触发建议的无效,这是一个完美的解决方案。

再次感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64120285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档