2015-01-12 22 views
1

随着可可,我如何安排一个操作(代码块)在后台线程上异步运行?如何在后台线程上调度操作[可可]

存在操作长时间阻塞的风险,所以在主线程上执行操作至关重要。

当然,我可以创建自己的线程(NSThread),但在我看来,可可应该提供一个更简单/更好的方法。

+0

有大约5种不同的方式来做到这一点。 –

+0

@HotLicks好。让我知道他们。 –

回答

1

您可以使用Grand Central Dispatch命令dispatch_async()轻松地在后台运行代码。这方面的一个例子:

dispatch_queue_t bgQueue = dispatch_queue_create("bgQueue", NULL); 
dispatch_async(bgQueue, ^{ 
    //your code here 
}); 
+0

据我所见,文档没有说这会在后台线程上运行该块,即在不是主线程的线程上。我错过了什么吗? –

+0

它将发送到您设置为第一个参数的任何队列。您不使用dispatch_get_main_queue()创建的任何队列不是主队列。因此你的块将在后台运行(例如不在主队列中)。 –

+0

@jshier你是说主线程永远不会执行提交给GCD队列的东西,除非该队列是主队列?请注意,这里重要的不是哪个队列运行它,而是哪个线程。 –

相关问题