2012-11-21 178 views
0

一個新手問題,請耐心等待。我無法理解什麼是「呼叫隊列」。我四處搜索,但找不到定義。也許這太簡單了,不值得一個定義?例如,Apple文檔說,「在調用隊列上調用了以下完成處理程序」。任何人都可以告訴我哪個是以下代碼中的調用隊列?什麼是「呼叫隊列」?

編輯:我熟悉GCD和隊列和線程的概念。只是不知道呼叫隊列..

dispatch_async(DownloadQ, ^{ 
    // 
    // Download (json to map to array) 
    // 
    NSArray* array = [DoubanDownloader downloadEvent]; 
    // 
    // Map (Do NOT do this in main queue, will block UI) 
    // 
    [FillDatabase mapArray:array toManagedObjectsinContext:self.document.managedObjectContext byCommand:YES]; 
    // 
    // commit changes to store 
    // 
    [self.document.managedObjectContext performBlock:^{ // This will get main thread! 
     [self.document saveToURL:self.document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success){ 
      // what's the calling queue? 
     }]; 
    }]; 
}); 
+0

您從此調用此方法的線程。 – Pochi

回答

1

調用隊列是哪個隊列使得呼叫saveToURL:forSaveOperation:completionHandler:。所以例如如果你從主隊列中調用它,那麼你的完成處理程序也會出現在主隊列中。所以'呼叫'是一個形容詞,而不是'呼叫隊列'是一個複合名詞。

+0

謝謝湯米,我想我現在明白了。然而有一個相關的問題:與「方法的調用者」有關的「調用隊列」? – Philip007

+0

調用者將成爲調用的對象。因此,調用隊列將是該對象在進行調用時運行的任何隊列。 – Tommy

+0

那麼這種情況下的來電者是誰? – Philip007