Если у вас есть доступ и вы можете изменить код Objective-C, добавьте туда API C.
В противном случае, если вы действительно не можете изменить код Objective-C, вы можете напрямую использовать среду выполнения Objective-C, но это не рекомендуется:
#include <objc/runtime.h>
objc_msgSend(VideoCameraBinded, // receiver
sel_registerName("VideoCamera_CameraUpdateBinded:"), // selector
buffer); // comma separated list of arguments
Вам необходимо связаться с библиотекой времени выполнения Objective C, обычно libobjc:
$ clang mycode.c -lobjc
$ # or cc if you use GCC
Если метод Objective-C ожидает NSArray *
вместо float *
, вы можете использовать Core Foundation с CFArrayRef
. CFArrayRef
и NSArray *
являются взаимозаменяемыми, но CFArrayRef
является типом C, поэтому вы можете использовать его. То же самое касается CFNumberRef
и NSNumber *
, см. документацию Apple по этому .