我的基本想法是单击一个按钮并进入无限循环。我打算单击另一个按钮停止并退出此循环。麻烦的是,一旦我进入无限循环,我的第二次点击就永远不会被检测到,所以我无法退出。关于如何让它发挥作用的任何想法?万分感谢。
-(IBAction) startButton {
while (1) {
// code
}
}
-(IBAction) stopButton {
NSLog(@" out of loop now");
}
如果不能使用计时器,则需要使用后台线程,NSOperation
或 Grand Central Dispatch 任务。
你想让你的循环做什么?也许你可以使用一个NSTimer
.
为什么不使用NSOperation 和 NSOperationQueue?每次通过循环,你可以检查它是否被取消和中断。这样一来,主线程(您的 UI 更新和响应的线程)就不会冻结,您的应用程序也不会沙滩球。
要意识到的重要一点是,如果您将主线程捆绑在一个循环中,那么在循环结束之前您将不会获得更多事件,这意味着没有按钮单击取消。