比方說,我想在後面的時間來執行的代碼塊,所以我打電話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