Was ist der Unterschied zwischenWas ist der Unterschied zwischen dispatch_async_f und dispatch_async?
dispatch_async_f
und
dispatch_async
in ios?
Was ist der Unterschied zwischenWas ist der Unterschied zwischen dispatch_async_f und dispatch_async?
dispatch_async_f
und
dispatch_async
in ios?
dispatch_async -
auf einer Absende-Warteschlange einen Block für die asynchrone Ausführung einreicht und kehrt sofort zurück. Diese Funktion ist der grundlegende Mechanismus zum Senden von Blöcken an eine Dispatch-Warteschlange. Aufrufe an diese Funktion werden immer unmittelbar nach dem Senden des Blocks zurückgegeben und warten nicht, bis der Block aufgerufen wird.
Erklärung: void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
Params: Warteschlange - die Warteschlange auf dem Block vorgelegt werden & ist, kann nicht NULL sein. Block - Block, der an die Zielwarteschlange gesendet wird & kann nicht NULL sein.
dispatch_async_f -
Sendet eine Anwendung definiert Block für async Ausführung auf einer Absende-Warteschlange & kehrt sofort zurück. Diese Funktion ist der grundlegende Mechanismus zum Senden von anwendungsdefinierten Funktionen an eine Dispatch-Warteschlange. Aufrufe an diese Funktion werden immer unmittelbar nach der Übergabe der Funktion zurückgegeben und warten nicht darauf, dass sie aufgerufen wird.
Erklärung: void dispatch_async_f(dispatch_queue_t queue, void *context, dispatch_function_t work);
Params: Warteschlange - die Warteschlange auf dem Block vorgelegt werden & ist, kann nicht NULL sein. Arbeit - Anwendung definierte Funktion, die auf der Zielversandwarteschlange 7 aufgerufen werden soll, kann nicht NULL sein.
Der Hauptgrund für die Verwendung dieser asynchronen Blöcke ist die Hintergrundaufgabe.
dispatch_async:
Durch diesen Block verwenden Sie einen Codeblock asynchron ausführen können
Eg.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
//Background Thread
dispatch_async(dispatch_get_main_queue(), ^(void){
//Run UI Updates can be done only on main thread
});
});
dispatch_async_f:
Unabhängig von dem Block in async Aufgabe können Sie Ihre benutzerdefinierte Funktion setzen im Hintergrund durchgeführt werden.
ZB:
void mainFunc(void) {} // your function
void callingFuncForAsyncTask(void*) { mainFunc(); } // new function which takes arguments for calling inside async_f
dispatch_async_f(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 0, &callingFuncForAsyncTask);
Für mehr Informationen und Details zu den Parametern freundlich siehe: https://developer.apple.com/reference/dispatch/1452834-dispatch_async_f
Werfen Sie einen Blick auf die Dokumentation. dispatch_async_f hat einen zusätzlichen Parameter. Sehen Sie, ob Sie es von dort herausfinden können. –