fdh
fdh

Reputation: 5354

How to use dispatch_async_f?

The function that I want queued takes no parameters. What do I pass in as paramContext? Passing in NULL generates the compile error "Invalid use of void expression". I do not want to add a parameter to my function just to make it compile - how do I make this work?

Mac OS X Snowleopard, Xcode 3.2.6 with Objective-C

Upvotes: 6

Views: 4703

Answers (2)

Lily Ballard
Lily Ballard

Reputation: 185841

You need to wrap the function somehow. The easiest way is actually to use dispatch_async() instead, as in

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

Upvotes: 2

Georg Fritzsche
Georg Fritzsche

Reputation: 99092

While you can just pass 0/NULL for the context argument, dispatch_async_f() takes void (*)(void*) as the function parameter, you can't pass it a function that takes no arguments.

You need to either change your function to take a void* parameter:

void func(void*) {}

... or, if you can't, wrap it:

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

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

Upvotes: 11

Related Questions