我有一个IBAction,可以启动多个计时器。
我希望在一段时间内有第二次或暂停。我该如何暂停执行?
我知道[self performSelector:@selector(someMEthod:) withObject:someObject afterDelay:1.0];
但我怎么能在没有打电话的情况下造成延误?
由于
答案 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);