Что разница междуВ чем разница между dispatch_async_f и dispatch_async?
dispatch_async_f
и
dispatch_async
в ИОС?
Что разница междуВ чем разница между dispatch_async_f и dispatch_async?
dispatch_async_f
и
dispatch_async
в ИОС?
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.
Основной причиной использования этих асинхронных блоков является наличие фоновой задачи.
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
Взгляните на документы. У параметра dispatch_async_f есть дополнительный параметр. Посмотрите, сможете ли вы это выяснить. –