Wywołanie C z Swift jest całkiem proste, ale ja zajmuję się tworzeniem dwukierunkowego opakowania w C, więc mój C musi wywoływać funkcje Swift.Jaki jest najlepszy sposób wywołania Swift z C?
W tej chwili mogę to zrobić, deklarując wskaźniki funkcyjne w C, i mając moje funkcje C, zadzwoń do nich po stronie Swift skonfigurował je, aby wywołać kod w Swift.
Mój plik C nagłówka:
typedef void (*callback_t)(void);
void callBackIntoSwift(callback_t cb);
Mój plik implementacja C:
#include "stuff.h"
#include <stdio.h>
void callBackIntoSwift(callback_t cb)
{
printf("Will call back into Swift\n");
cb();
printf("Did call back into Swift\n");
}
Po tym mój plik nagłówka C w nagłówku pomostowego, mogę wykonać następujące czynności na Swift strony:
let cb: callback_t = {
someKindOfSwiftFunction()
}
callBackIntoSwift(cb)
Albo nawet:
callBackIntoSwift {
someKindOfSwiftFunction()
}
Czy istnieje lepszy sposób, aby to zrobić, gdy wskaźniki funkcji i wywołania zwrotne nie są potrzebne? Chciałbym bezpośrednio wywołać wywołanie po stronie C: someKindOfSwiftFunction
... ale kiedy próbuję zastosować @convention (c)
do deklaracji funkcji, otrzymuję komunikat, że atrybut może być zastosowany tylko do typów, a nie deklaracji.
Wszelkie pomysły lub bazy kodów w np. Github Mogę rzucić okiem?
OP poprosił o wywołanie funkcji C w szybki, a nie jak się nazywają Objective-C metoda – pbush25
Autor chce zadzwonić Swif t kod z C. "Wywołanie C z Swift jest całkiem proste, ale zajmuję się tworzeniem dwukierunkowego opakowania w C, więc mój C musi wywoływać funkcje Swift." @ Pbush25 – Rolan
Prawdopodobnie mogę rozszerzyć mój komentarz. Funkcję 'SwiftFunctionWrapper()' można wywołać z dowolnego pliku c. – Rolan