2012-07-24 70 views
0

在我的應用程序中,我需要處理一組數據,並只有在互聯網連接可用時纔將其發送到服務器。我需要在單獨的線程上執行此任務,以便不中斷應用程序的正常執行。在獨立的iOS線程上執行延遲

我創建了一個名爲ProcessQueue的類,它遍歷數組並將其發送到服務器。

我需要在ApplicationDidBecomeActive事件上執行這個任務,延遲幾秒鐘,但在一個單獨的線程上。

我嘗試過,但選擇器只是不被調用。 (我試圖在ProcessQueue類中設置斷點)。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    [self performSelector:@selector(processTheQueue) withObject:nil afterDelay:5]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 

    }); 
}); 


- (void) processTheQueue 
{ 

    QueueProcessor *process = [[QueueProcessor alloc] init]; 
    [process processQueue]; 

} 

我也曾嘗試使用performSelector的[process processQueue]' method instead of dispatch_async`內,但不起作用。

+0

人誰可以幫助? – tGilani 2012-08-06 10:58:18

回答

1

試試這個..

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 to be executed on main thread.If you want to run in another thread, create other queue 
     [self repeateThreadForSpecificInterval]; 
    });