最好的,
我正在 Xcode 5.1.1 和 objective-c 中编写应用。
在应用程序中,现在只有一个按钮(用于测试)。 当我点击按钮时,它必须永远运行一段代码。 当我再次单击该按钮时,我希望同一段代码停止运行。 当我再次触摸它时,它又开始运行了。 我已经尝试了一个简单的for循环,但这不起作用(当然可以预测)。 当我触摸按钮时它开始运行,但随后视图变得无法使用。 我怎么能做到这一点?
答案 0 :(得分:2)
您只需使用NSTimer
:
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:YES];
按钮操作" @selector
"用户:
[timer invalidate];
修改强>
正如您可以从评论中读到的那样,使用计时器永远运行某些东西可能很危险,请确保时间间隔比运行的脚本(或代码段)长。否则,您可能会很快地使用数千个运行相同的脚本来加载CPU
答案 1 :(得分:1)
关键是在后台运行代码,这样就不会弄乱你的用户界面。您可以使用
执行此操作dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// your code
});
答案 2 :(得分:0)
我永远不会在objective-c中开发,但是我会编写一个扩展Thread的类,然后在这个类中我会放一个volatile静态变量来指示按钮被点击了。在run方法中,我需要一个while循环,而var是false运行代码,如果它转为true退出或反之亦然。只要单击该按钮,我就会切换var并启动线程。因此,如果每隔一次点击按钮就会执行它。
我会把它写成评论但没有权限..