ıPhone - Grand Central ana iş parçacığı Gönderme
Başarı ile kullanıyorum, grand central uygulamalarım acele, ama böyle bir şey kullanmanın asıl avantajı nedir: merak ediyordum
dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff
hatta
dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff
Her iki durumda da ateşleme bloğu uygulaması çalıştırır tam olarak ana konu üzerinde yürütülecek ve bu yükü azaltmak için yardımcı olmaz yani. Birinci durumda bloğu çalışır herhangi bir kontrol yok. Bloklar onları işten sonra yarım saniye yürütülmekte vakaları gördüm. İkinci durumda, benzer
[self doStuff];
değil mi?
Sen ne düşünüyorsun merak ediyorum Beyler.
CEVAP
Ana sıraya bloğu gönderme genellikle bir arka plan sıra bazı arka plan işlemleri, örneğin bitirdi sinyal yapılır
- (void)doCalculation
{
//you can use any string instead "com.mycompany.myqueue"
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
dispatch_async(backgroundQueue, ^{
int result = <some really long calculation that takes seconds to complete>;
dispatch_async(dispatch_get_main_queue(), ^{
[self updateMyUIWithResult:result];
});
});
}
Bu durumda, bir arka plan üzerinde sıra uzun bir hesaplama yapıyoruz ve hesaplama tamamlandığında bizim UI güncellemek gerekiyor. Güncelleme UI normalde biz bu tip sıradan 'sinyal' temel sıraya tekrar iç içe bir dispatch_async kullanarak. yapılması
Muhtemelen ana sıra ama genelde yapılan bir blok içinde bu şekilde iç içe yani arka sıraya gönderdi göndermek isteyebileceğiniz başka örnekler de vardır.
- arka plan işleme - ^ bitmiş . UI güncelleme
- veri parçasını arka sıra - ^ üzerinde işlenmiş . sinyal ana sonraki yığın başlatmak için sıraya
- arka sıra - ^ gelen ağ veri . sinyal ana mesajı geldi sıra
- vs vs
Ana kuyruğa göndermek için isteyebilirsiniz nedendanana sıra. Neyse, zaten genelde olmaz makul bir iş çalıştırmak döngü etrafında bir dahaki sefere yapmak için zamanlama yapabilir ancak.
Grand Central kullanılarak dispatch_sy...
Grand Central (GCD) vs performSelector...
NSOperation Grand Central Dispatch vs...
Nasıl bir UİTextField düzenlerken klav...
Access-Control-Allow-Origin Google API...