之间的区别是什么
dispatch_async_f
和
在ios中dispatch_async
?
答案 0 :(得分:2)
使用此异步块的主要原因是具有后台任务。
dispatch_async:
通过使用此块,您可以异步运行代码块
例如
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
答案 1 :(得分:1)
dispatch_async -
在调度队列上提交异步执行块并立即返回。 此函数是将块提交到调度队列的基本机制。调用此函数后,总是在提交块后立即返回,并且永远不会等待调用该块。
声明:void dispatch_async( dispatch_queue_t queue, dispatch_block_t block);
参数: queue - 要提交块的队列&不能为NULL。 block - 要提交到目标队列的块&不能为NULL。
dispatch_async_f -
在调度队列&上提交用于异步执行的应用程序定义块。马上回来。 此函数是将应用程序定义的函数提交到调度队列的基本机制。对函数的调用总是在提交函数后立即返回,并且永远不会等待它被调用。
声明:void dispatch_async_f( dispatch_queue_t queue, void *context, dispatch_function_t work);
参数: queue - 要提交块的队列&不能为NULL。 work - 要在目标调度队列7上调用的应用程序定义函数不能为NULL。