2016-07-29 3 views

답변

1

-

가 디스패치 큐에 비동기 실행을 위해 블록을 송신 해 즉시 반환합니다. 이 기능은 블록을 디스패치 대기열에 제출하는 기본 메커니즘입니다. 이 함수에 대한 호출은 블록이 제출 된 직후에 항상 반환되고 블록이 호출되기를 기다리지 않습니다.

선언 : 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 : 당신은 코드 블록 비동기

예를 실행할 수 있습니다

이 블록을 사용하여.

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

친절 참조 : dispatch_async https://developer.apple.com/reference/dispatch/1452834-dispatch_async_f