2016-07-29 39 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