gpt4 book ai didi

swift - 通过按下按钮快速停止 for 或 repeat-while 循环

转载 作者:可可西里 更新时间:2023-11-01 00:58:38 25 4
gpt4 key购买 nike

我需要弄清楚如何停止循环。我尝试了几种不同类型的循环,但最终结果是一样的——在循环进行时无法按下停止按钮。这是我到目前为止所拥有的...

var stopButtonPressed = false
var numArray = [0,1,2,3,4,5,6,7,8,9]
for num in numArray{
print(num)
sleep(2)
if stopButtonPressed {
return
}
}

很明显,按下的按钮将 stopButtonPressed 设置为 true,但是同样...循环迭代时无法按下按钮。那么执行此操作的更好方法是什么?

编辑

@dasblinkinlight

好的,所以我可以遵循您所说的逻辑,但实现仍然令人困惑。在您的示例中,对于选择器,您放置了“MyClass.doOneStepOfLoop”,这非常有意义。只有定时器不愿意接受一个函数作为参数。那么,如果它不接受某个函数,我该如何让它执行一个步骤呢?

为了简化问题,我们每两秒打印一次(“1”)怎么样?根据你的例子,我认为它看起来像这样......

self.timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(print("1")), userInfo: nil, repeats: true)

但这不起作用并给出错误

Argument of '#selector' does not refer to an initializer or method

我也看了你发的Q&A,可惜还是没看懂。我在选择器中看到很多伪代码,如“YourClass.doAStep”或“Class.buttonPressed”或“Class.test”……你能演示一些实际的实现吗?

最佳答案

您误解了 Cocoa 应用程序处理事件的方式:在您的方法退出之前,应用程序不会响应事件。

每两秒执行一次操作的正确方法是设置一个计时器,而不是使用循环。更改停止按钮按下的处理程序以停止计时器:

// This goes into your viewWillAppear
self.timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(MyClass.doOneStepOfYourLoop), userInfo: nil, repeats: true)

// This goes into your stopButtonPressed handler
self.timer.invalidate()

关于swift - 通过按下按钮快速停止 for 或 repeat-while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38944671/

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