将objc块传递给函数

时间:2019-03-29 12:11:04

标签: objective-c objective-c-blocks

已经花了2天时间来解决这个问题,我对C语言不是很熟练。因此,请使用以下语法将objc函数映射到C函数

extern int32_t createWallet(void (*fn)(int32_t handle, int32_t errCode)

但不知道如何传递类似函数的块。一直试图通过

void (^ createWalletCallback)(int32_t t, int32_t e) = NULL;
createWalletCallback = ^void(int32_t t, int32_t e){
    /// some code here
}

但没有成功。您能否至少指出我要更改的内容?谢谢

1 个答案:

答案 0 :(得分:0)

这似乎是Is there a way to wrap an ObjectiveC block into function pointer?的副本,其中建议是“不要这样做”。

相反,您不能使用普通的C函数指针吗?定义功能

void createWalletCallback(int32_t t, int32_t e) {
    // some code here, maybe referencing global variables
    // (including a semaphore, if other code needs to wait on the response)
}

然后打电话给

createWallet(&createWalletCallback);