2013-01-02 19 views
0

我有一些長時間運行的任務(IE從數據庫中檢索複雜數據),我需要運行任何時候我的視圖出現。我知道,出於性能方面的原因,我想把我長期執行的任務從主線程中解脫出來。我也知道我必須重新啓動主線程才能執行與UI相關的任何操作。我試圖找出完成這個的正確的GCD模式。從我在GCD文檔看,這似乎是「正確」的方式做事情,但我很好奇,如果人們發現了另一種模式,使其更實用:viewWillAppear中長時間運行任務的適當GCD模式是什麼?

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    // Add long running code for off the UI thread here. 

    dispatch_async(dispatch_get_main_queue(), ^{ 

      // Add UI updating code here back on the UI thread. 

    }); 
}); 

我基本上說異步(IE不會阻止UI線程)轉到單獨的線程,做一些事情,然後返回到主線程並更新UI。

+1

那就是你是如何做到的。 – Joe

回答

1

您的方法很好。我能看到的唯一缺點是你沒有任何辦法來取消長時間運行的操作。這可能導致內存和其他資源擁塞。