2016-07-29 2 views

Antwort

1

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.

1

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

Verwandte Themen