26.9 Synchrone Tasks

Alles läuft so viel schneller und besser, dass Sie versucht sein könnten, Dispatch-Queues überall zu verwenden. Zum Beispiel können wir die Berechnung der Farbe einer Kachel in eine nebenläufige Queue verschieben:

Dispatch/Newton6/Tile.m

   -(void) cycle {
▸     dispatch_async(
           dispatch_get_global_queue(
                           DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                [self calculateColor];
▸         });
       dispatch_async(dispatch_get_main_queue(), ^{
            [self.grid.tiles addObject:self];
            [self.grid setNeedsDisplayInRect:self.frame];
       });
       if (self.frame.size.width > 1 ) {
        [self split];
       }
   }

Das Problem bei diesem Ansatz lässt sich besser erkennen, wenn wir die serielle Queue herausnehmen, die wir im vorigen Abschnitt eingefügt haben:

Dispatch/Newton6/Tile.m

-(void) split { CGFloat ...

Get Cocoa-Programmierung now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.