dispatch_async_f和dispatch_async有什么区别?

时间:2016-07-29 10:42:38

标签: ios objective-c grand-central-dispatch

之间的区别是什么
  

dispatch_async_f

  

dispatch_async

在ios中

2 个答案:

答案 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。