gpt4 book ai didi

while-loop - Swift 'While' 语句卡住 iOS 模拟器

转载 作者:行者123 更新时间:2023-11-28 10:02:30 24 4
gpt4 key购买 nike

我是编程新手,之前没有在我的应用中使用过“while”语句。我有一个 cocoapod 正在为圆形计时器图形制作动画。完成动画后,它会将“didFinish”BOOL 设置为“true”。我能够成功检查此变量,但是当我告诉我的应用程序将我的按钮标签之一设置为特定文本时,“didFinish”为 false,它会卡住我的应用程序。

//start the timer and change the label to "Reset"
else {
brewingTimer.start()
buttonSelect = 1
startTimer.setTitle("Reset", forState: .Selected)
//Start the circle counter graphic
circleCounterOuter.startWithSeconds(5)
circleCounterInner.startWithSeconds(2)
while circleCounterInner.didFinish == false {
startTimer.setTitle("Reset!", forState: .Selected)
}
startTimer.setTitle("Ok!", forState: .Selected)
}

当我点击“开始”时,应用程序卡住了。当在我的 while 循环中为 de-bugger 设置一个断点时,应用程序似乎在我的语句中循环,因为我可以在它循环通过“while 循环”时单击以“跳过”。但是当我进行调试时,我当然看不到我的动画在屏幕上运行,所以我不确定到底发生了什么导致模拟缓慢。

最佳答案

您的代码阻塞了主线程。

这段代码忙于一遍又一遍地执行:

while circleCounterInner.didFinish == false {
startTimer.setTitle("Reset!", forState: .Selected)
}

与此同时,主线程上的其他任何东西都无法执行任何操作(例如更新文本或响应触摸事件),因此您的应用程序似乎被卡住了。

尝试不同的模式。例如,在长时间运行的工作开始时设置 startTimer 标签。然后,在工作完成后以不同的方法更新按钮。

您可能需要阅读有关委托(delegate)通知 设计模式的内容,它们通常用于此类情况。

关于while-loop - Swift 'While' 语句卡住 iOS 模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25101529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com