我想有一個呼叫發生異步,相當於:如何使用大中央調度揭開序幕一個異步調用?
doThisInASecondThreadThenHaveThisThreadDisappear:@selector(myMethod);
什麼是大中央調度呼叫做到這一點?我是新來的,而且我得到了所有與排隊的複雜的東西丟失。我的理解是可以與實現的事情,但對於這個簡單的情況下(即我目前關心),我只是失去了
我想有一個呼叫發生異步,相當於:如何使用大中央調度揭開序幕一個異步調用?
doThisInASecondThreadThenHaveThisThreadDisappear:@selector(myMethod);
什麼是大中央調度呼叫做到這一點?我是新來的,而且我得到了所有與排隊的複雜的東西丟失。我的理解是可以與實現的事情,但對於這個簡單的情況下(即我目前關心),我只是失去了
dispatch_queue_t queue = dispatch_queue_create("queueName", NULL);
dispatch_async(queue, ^(void) {
// code to execute here
});
dispatch_release(queue);
或者,如果你需要使用主線程:
dispatch_async(dispatch_get_main_queue(), ^(void) {
// code to execute here
});
下面是一個簡單的代碼示例
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);
dispatch_async(queue, ^{
// Stuff to do on another thread
// Mostly heavy calculations
dispatch_async(dispatch_get_main_queue(), ^{
// Stuff to do on main thread
// Mostly UI stuff
});
});
全球隊列沒有被釋放,最後一次通話是NOP(你會錯過在迂腐模式反正dispatch_retain配對)。 –
@Grzegorz亞當Hankiewicz,感謝您的信息! – Tudorizer
您也可以使用'dispatch_get_global_queue'得到全局併發隊列,而不是創建一個隊列之一。這可能是可取的,因爲你不必做任何內存管理。 – zneak
@zneak你能闡述一下它們究竟什麼樣子? – Nektarios
'dispatch_queue_t隊列= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_NORMAL,0);' – zneak