Передача блока objc в функцию - PullRequest
0 голосов
/ 29 марта 2019

боролся с этим в течение 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 голосов
/ 29 марта 2019

Кажется, это дубликат Есть ли способ обернуть блок ObjectiveC в указатель на функцию? , где совет "не делай этого".

Вместо этого, вы не можете использовать простой указатель на функцию 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);
...