Kann man einen Completionblock von ASIHTTPREQUEST / AFNetworking auf einem Hintergrundfaden ausführen?
-
13-11-2019 - |
Frage
Ich starte mein ASIHTTPREQUEST synchron in einem separaten Thread so: generasacodicetagpre.
Der Fertigstellungsblock wird jedoch noch auf dem Hauptfaden abgefeuert. kann man die Ausführung des Fertigstellungsblocks in demselben Thread halten, wenn die Anforderung gestartet wurde?
Das einzige, mit dem ich mich lösen kann.Das löst es jedoch nicht direkt, weil Sie im Hauptthread für einen freaking kleinen Moment passieren würden, bevor Sie den Rest des Codes in die erstellte Dispatch-Warteschlange umleiten.
Hat jemand eine bessere Lösung?
edit: Dasselbe gilt auch für AfNetwork-Fertigstellungsblöcke ...
Lösung
ok, um meine eigene Frage zu beantworten: Das ASIHTTPREQUEST-Framework hat keine Möglichkeit, Abschlussblöcke in einem anderen Thread zu starten.
Stattdessen kann man den AfNetwork-Framework verwenden.Hier haben Sie zwei Eigenschaften auf jede Art von Afoperation mit dem Namen " suctrycallbackQueue " und " failurcallbackqueue ".Dort können Sie einen vordefinierten ' dispatch_queue_t ' hinzufügen, um die Ausführung von Erfolgs- und Fehlerblöcken zu behandeln.
hoffe das hilft anderen mit dem gleichen Problem!
update: Beispiel generasacodicetagpre.
Andere Tipps
Versuchen Sie es mit einer definierten Warteschlange Ihrer eigenen Erstellung.Dann können Sie (sobald es schließlich in seinem Fertigstellungsblock-Signal auf die globale Warteschlange abgeschlossen ist, um die erforderlichen Anzeige zu aktualisieren.