比方说,我想在后面的时间来执行的代码块,所以我打电话dispatch_after
像这样:如何延迟dispatch_after排队的块的执行?
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
/* code */
});
但是如果我想“暂停”我的程序之前执行甚至开始呢?假设我想在此次通话后1秒暂停程序,等待未知的时间。然后暂停后,我想恢复等待队列中的2秒。因此,这将是这个样子:
- 呼叫dispatch_after以2秒的延迟
- 1秒后,暂停节目未知时间
- 恢复后,等待1秒,并执行块(所以总的延迟时间是2秒)
是否有这样做的一种方式?或者我应该使用另一种方法?
我知道dispatch_suspend
和dispatch_resume
存在,但他们并不真正为我工作(或者我只是不知道如何正确使用它们)。
的解决方案并不一定要涉及到块,它也可能是延迟回调到指定的功能。重点是我希望能够暂停等待时间直到执行。
我敢肯定这是不可能的。据我所知,一旦你发送了这个块,就没有办法改变它的发送时间。暂停队列也不会影响调度时间,它只会阻止一旦时间到了就运行该块。 – 2014-09-11 05:02:28
那么你可以提出另一种方法吗?也许延迟回调函数?这也会很好。我其实想在动画序列中使用它。首先我在屏幕上制作一些动画,然后在2秒后我想执行一些代码,这些代码也可以做到这一点。它的伟大工程与'dispatch_after'但如果你发送的应用背景,然后把它带回来(在动画),定时搞砸了。块内的代码立即执行,而不是等待2秒。 – adam10603 2014-09-11 05:05:53