我有一些长时间运行的任务(IE 从数据库中检索复杂数据),我需要在我的视图出现时运行这些任务。我知道出于性能原因,我想将长时间运行的任务从主线程中移除。我也知道我必须回到主线程来做任何与 UI 相关的事情。我正在尝试找出正确的 GCD 模式来实现这一点。从我在 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。