SORU
26 EKİM 2011, ÇARŞAMBA


ı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
26 EKİM 2011, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AginoEvolutionHD

    AginoEvoluti

    27 AĞUSTOS 2011
  • David Wills

    David Wills

    31 Aralık 2007
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010