【问题标题】:Passing a Block to a function that requires a function pointer [duplicate]将块传递给需要函数指针的函数[重复]
【发布时间】:2014-06-06 14:50:30
【问题描述】:

我有一个 C 函数:

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

我想将一个 Objective-C 块传递给这个函数

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

encodeFile(aBlock);

有没有办法做到这一点?

【问题讨论】:

  • 你可以传入一个运行你的c函数的块。
  • 刚刚编辑。我希望更清楚我需要做什么。

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


【解决方案1】:

你必须编写自己的函数,而且它并不漂亮:

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

...

encodeFile (&myFunction); 

基本上,您会遇到很多块旨在避免的问题(线程安全等)。

【讨论】:

  • 块不是静态的。它作为方法的参数传递。并且可以多次调用它。有可能它不存在一些可以解决问题的 __bridge 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多