2016-05-05 5 views
0

Ich habe eine OperationQ und For-Schleife innerhalb dieser. innerhalb dieser for loop Im rufenden dispatch_nach der Verzögerung wächst immer wenn die for-Schleife Iteration passieren. Dies ist, um sicherzustellen, dass das Ding innerhalb von for Schleife passieren wird mit einer Verzögerung und sequentiell passieren.Wie Operation Warteschlange mit einer For-Schleife und Dispatch_after Innen mit einer wachsenden Verzögerung

Jetzt, wenn ich diese OperationQ mit neuen Daten zurücksetzen möchte. Ich annulliere alle Operationen der OperationQ. Dadurch wird zwar der Vorgang abgebrochen, aber der Versand nach dem Auslösen mit einem Dispatch-Timer läuft noch. Kann ich die Funktion dispatch_after in der OperationQ abbrechen?

Wenn ich die OperationQ abbreche, stoppt die Operation, aber die dispatch_after läuft noch mit der dispatch_time, die wir angegeben haben. Irgendwelche Ideen oder Vorschläge

Antwort

1

dispatch_after hat keinen Abbruchmechanismus. In der Lage zu stornieren ist einer der Vorteile von NSOperationQueue. Anstatt also die Arbeit direkt in Ihrem dispatch_after Block zu erledigen, verwenden Sie diesen Block, um einen NSOperation zu planen, der dann auch abgebrochen werden kann.

+0

Aber das Problem, das ich habe, ist, dass ich den Betrieb vor dem Zeitplan Zeit abbrechen muss. OpQ-> Dispatch-> wait-schedule (während dieses Zeitplans warten kann ich Interrupt bekommen, um dies zu stornieren. Wenn nicht meine Operation warten und ausführen muss) -> Operation –

0

Als Curmudgeonlyly erwähnt habe ich die NSOperation. aber die Sache, die ich verpasste, war, als die Operation begann, Abbrechen war nichts zu tun. Ich habe eine Iteration innerhalb der Operation. also habe ich nach selbst gesucht und zurückkommen. das hat funktioniert. Danke

Verwandte Themen