将块传递给需要函数指针的函数

时间:2014-06-06 14:50:30

标签: objective-c c function-pointers objective-c-blocks

我有一个C函数:

void encodeFile(void (*aFunction)(double));

我想将Objective-C Block传递给此函数

void (^aBlock)(double) = ^(double aDouble) {...}

encodeFile(aBlock);

有办法吗?

1 个答案:

答案 0 :(得分:1)

你必须编写自己的功能,并不是很漂亮:

static BlockFunction myBlock = ...;
static void myFunction (double value) { myBlock (value); }

...

encodeFile (&myFunction); 

基本上,您遇到了许多问题(线程安全等),这些问题是为了避免这些问题而设计的。