SORU
26 HAZİRAN 2009, Cuma


NSOperationQueue tüm görevler tamamlandığında bildirim almak

NSOperationQueue waitUntilAllOperationsAreFinished, ama bunun için eşzamanlı olarak beklemek istemiyorum. Ben sadece sıra tamamlandığında UI ilerleme göstergesi gizlemek istiyorum.

Bunu yapmanın en iyi yolu nedir?

Gidemem gönderme bildirimleri benim NSOperations, çünkü bilmiyorum hangisi olacak son ve [queue operations] olmayabilir henüz boş (ya da daha kötüsü - depolanmışsa) bildirim alınır.

CEVAP
17 NİSAN 2010, CUMARTESİ


KVO sıranız operations özelliğini gözlemlemek için kullanın, sonra kuyruğunu tamamlamış [queue.operations count] == 0 kontrol ederek anlayabilirsiniz.

Size sıra Kur bu işi:

[self.queue addObserver:self forKeyPath:@"operations" options:0 context:NULL];

O zaman yap observeValueForKeyPath: Bu

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
                         change:(NSDictionary *)change context:(void *)context
{
    if (object == self.queue && [keyPath isEqualToString:@"operations"]) {
        if ([self.queue.operations count] == 0) {
            // Do something here when your queue has completed
            NSLog(@"queue has completed");
        }
    }
    else {
        [super observeValueForKeyPath:keyPath ofObject:object 
                               change:change context:context];
    }
}

(NSOperationQueue özelliği queue) adlı varsayarak


4.0 şimdi NSOperationQueue.operationCount bir özelliği vardır iOS, doktorlara göre KVO uyumlu olan. EDİT: Bu cevap hala iOS 4.0 ancak çalışacak, hala geriye uyumluluk için yararlı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • Dopelives

    Dopelives

    30 Temmuz 2009
  • rekjavicxxx

    rekjavicxxx

    28 EKİM 2007