2011-03-23 21 views

cevap

18

Sen artık kuyruğuna bir erişim ihtiyaç duyduğunuzda dispatch_release aramalısınız ... ...

dispatch_queue_t myQueue = dispatch_queue_create("com.mysite.page", 0); 
dispatch_async(myQueue, ^{}); 
dispatch_release(myQueue); 

bunu değişmelidir. Ve myQueue yerel değişkeni olarak, numaralı telefonu orada aramalısınız.

Oku dispatch_queue_create belgeleri:

Blokları sıraya gönderilir

Tartışma FIFO sırayla birer birer yürütülür. Bununla birlikte, bağımsız sıralara gönderilen blokların, birbirleriyle eşzamanlı olarak yürütülebileceğini unutmayın.

Uygulamanız gönderim kuyruğuna artık ihtiyaç duymadığında, bunun dispatch_release işleviyle serbest bırakması gerekir. Bir sıraya gönderilen bekleyen tüm bloklar, bu sıraya başvuruda bulunur, dolayısıyla bekleyen tüm bloklar tamamlanana kadar sıra ayrılmaz.

+0

Bu hala geçerli mi? ARC ile onu serbest bırakmamız gerekmiyor – hfossli

4

Sızıntı aracı, kodunuzdan artık referansı olmayan belleğin ayrıldığı yerleri bildirir.

Bu yöntem çalıştırıldıktan sonra, oluşturduğunuz sıranın referansı olan hiçbir şey olmadığından ve dispatch_release() hiçbir zaman çağrılmadığından, bir sızıntı olarak kabul edilir.

+1

Hatta ARC sizin için halledemez. Bu yüzden de onu serbest bırakmak zorundasınız: dispatch_release (myQueue) .. – geforce

İlgili konular