fdh*_*fdh 6 macos multithreading function objective-c grand-central-dispatch
我想要排队的功能不带参数.我传给的是paramContext什么?传入NULL会生成编译错误"无效使用void表达式".我不想在我的函数中添加一个参数,只是为了让它编译 - 我该如何使它工作?
使用Objective-C的Mac OS X Snowleopard,Xcode 3.2.6
Geo*_*che 11
虽然你可以通过0/ NULL的上下文参数,dispatch_async_f()采用void (*)(void*)作为函数的参数,你不能传递一个函数,它不带任何参数.
您需要更改函数以获取void*参数:
void func(void*) {}
Run Code Online (Sandbox Code Playgroud)
...或者,如果你不能,包装它:
void orig(void) {}
void wrapper(void*) { orig(); }
// ...
dispatch_async_f(queue, 0, &wrapper);
Run Code Online (Sandbox Code Playgroud)
您需要以某种方式包装该函数。最简单的方法实际上是使用dispatch_async(),如
dispatch_async(queue, ^{ myFunc() });
Run Code Online (Sandbox Code Playgroud)