6

La función que quiero poner en cola no tiene parámetros. ¿Qué paso como paramContext? Al pasar en NULL se genera el error de compilación "Uso no válido de expresión vacía". No quiero agregar un parámetro a mi función solo para hacerlo compilar, ¿cómo puedo hacer que funcione?Cómo usar dispatch_async_f?

Mac OS X Snowleopard, Xcode 3.2.6 con Objective-C

Respuesta

2

Es necesario para envolver el funcionar de alguna manera. La forma más fácil es en realidad usar dispatch_async() en su lugar, como en

dispatch_async(queue, ^{ myFunc() }); 
11

Mientras que sólo puede pasar 0/NULL para el argumento contexto, dispatch_async_f() toma void (*)(void*) como el parámetro de función, no se puede pasar una función eso no tiene argumentos.

Necesitas o bien cambiar su función para tomar un parámetro void*:

void func(void*) {} 

... o, si no puede, envolverlo:

void orig(void) {} 
void wrapper(void*) { orig(); } 

// ... 
dispatch_async_f(queue, 0, &wrapper);