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

  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • grickle

    grickle

    22 AĞUSTOS 2006
  • TeachMeComputer

    TeachMeCompu

    31 EKİM 2009