2010-01-26 6 views
9

Ich suche nach einer Möglichkeit, eine NSOperationQueue neu anzuordnen.Reorder NSOperationQueue

Ich könnte alle Operationen abbrechen und sie zurück in der Reihenfolge, die ich will, aber ich hoffe auf etwas ein bisschen sauberer. Irgendwelche Gedanken?

Antwort

21

Der Hauptunterschied zwischen NSOperationQueue und den zugrunde liegenden GCD-Warteschlangen ist, dass NSOperation s Abhängigkeiten zwischen Operationen unterstützen. NSOperationQueue wird einen Vorgang nicht planen, bis alle seine Abhängigkeiten abgeschlossen sind. Von den verfügbaren Operationen wird die Operation mit der höchsten Priorität als nächste ausgewählt.

Da die Operationswarteschlange mehrere Operationen gleichzeitig ausführen kann (gemäß maxConcurrentOperations), gibt es in der Warteschlange keinen strengen Ordnungssinn. Sie wären viel besser dran, wenn Sie die Abhängigkeiten-API verwenden oder Operationsproritäten ändern.

Ich glaube, dass Sie Abhängigkeiten und Prioritäten ändern können, nachdem Sie der Warteschlange einen Vorgang hinzugefügt haben.

+0

Prioritäten, ja. Das wird mir nah genug kommen. Vielen Dank! – mousebird

6

Es ist nicht möglich, Vorgänge in einer Warteschlange neu zu ordnen. Wenn Sie angeben müssen, dass eine Operation nacheinander ausgeführt werden muss, verwenden Sie dazu die Abhängigkeiten-API.

Weitere Informationen finden Sie in der Dokumentation NSOperationQueue. Die ersten beiden Absätze der Übersicht behandeln Abhängigkeiten.