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.