暂停执行1秒钟

时间:2010-12-26 21:41:54

标签: iphone cocoa-touch

我有一个IBAction,可以启动多个计时器。

我希望在一段时间内有第二次或暂停。我该如何暂停执行?

我知道[self performSelector:@selector(someMEthod:) withObject:someObject afterDelay:1.0];

但我怎么能在没有打电话的情况下造成延误?

由于

3 个答案:

答案 0 :(得分:4)

您可以拨打sleep()+[NSThread sleepForTimeInterval:],但请不要在主线程上执行此操作。暂停执行主线程意味着您的应用程序的UI将在此时被阻止,并向用户显示,就好像它已崩溃一样。如果你阻止主线程超过几秒钟,Apple的看门狗定时器会立即杀死你的应用程序。

有关此问题的更多信息,请参阅Jeff LaMarche撰写的此博文:http://iphonedevelopment.blogspot.com/2010/05/psa-respect-main-thread.html

答案 1 :(得分:1)

你不想在没有打电话的情况下造成延误。这对UI来说很糟糕,并不适合Cocoa Touch的事件驱动范例。

将要暂停的例程(至少)切成两部分/一部分。让前半部分设置延迟调用到后半部分(执行带延迟,定时器,队列等的选择器),然后返回主循环。稍后,操作系统将在可能执行有用的操作之后调用第二部分(为用户提供响应式UI或节省电池寿命,赶上后台电子邮件等)。

你可能必须学习如何在部分之间保存状态(循环变量等),这是一些新程序员在学习中似乎错过的东西。

答案 2 :(得分:0)

你可以使用sleep(int_No_of_Sec); //例如睡眠(1);