2012-06-01 109 views
2

我有一個for循環到主隊列排隊塊如下:塊串行調度隊列不執行 - GCD iOS的Objective-C的

for (int x=0; x<5; x++) { 
    double delayInSeconds = x * .03; 
     dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
     dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     ... code here ... 
     } 
    } 

只有第一個塊被執行。我已經驗證了循環正常工作,它正在循環適當的次數,並且不會引發異常或錯誤。

+0

塊中的代碼是否在操縱調度隊列?另外,它看起來延遲的粒度非常小。如果時間很重要,你有沒有考慮爲這段代碼創建一個新的調度隊列? –

+0

由於此代碼甚至無法編譯,因此很明顯,您並未剪切並粘貼它。你的實際代碼是什麼樣的?有可能你有一個類型或一些這樣的。另外,你確定排隊的塊永遠不會被調用嗎?修復代碼後,它適用於我(我可以看到該塊執行5次)。 –

回答

6

有了這個代碼:

for (int x=0; x<5; x++) { 
    double delayInSeconds = x * .03; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     NSLog(@"Blah!!"); 
    }); 
} 

「嗒嗒」 被註銷的5倍。我猜你發佈的代碼與你在應用中的代碼不一樣?我不得不添加);到dispatch_after調用結束。

相關問題