2016-07-29 4 views

ответ

1

dispatch_async -

Отправляет блок для асинхронного выполнения в очереди отправки и немедленно возвращается. Эта функция является основным механизмом отправки блоков в очередь отправки. Вызовы к этой функции всегда возвращаются сразу после отправки блока и никогда не ждут вызова блока.

Декларация: void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

Params: очереди - очереди, на которой блок должен быть представлен & не может быть NULL. блок - блок, который должен быть отправлен в целевую очередь & не может быть NULL.

dispatch_async_f -

Отправляет определенный блок прикладных программ для выполнения асинхронной по очереди отправки & возвращается немедленно. Эта функция является основным механизмом отправки функций, определенных приложением, в очередь отправки. Вызовы к этой функции всегда возвращаются сразу после отправки функции и никогда не ждут ее вызова.

Декларация: void dispatch_async_f(dispatch_queue_t queue, void *context, dispatch_function_t work);

Params: очереди - очереди, на которой блок должен быть представлен & не может быть NULL. Работа - назначенная функция приложения для вызова в целевой диспетчерской очереди 7 не может быть NULL.

1

Основной причиной использования этих асинхронных блоков является наличие фоновой задачи.

dispatch_async:

С помощью этого блока можно запустить блок кода асинхронно

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:

Независимо от блока в асинхронном задаче, которую вы можете поместить вашу пользовательскую функцию, которая будет выполняться в фоновом режиме.

Например:

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); 

Для получения дополнительной информации и параметров деталей доброжелательно относятся: https://developer.apple.com/reference/dispatch/1452834-dispatch_async_f