Это возможно в основном так же, как если бы вы использовали библиотеку C ++ в C.
Вы должны предоставить API C для переноса. Если вы определяете простые функции языка Си, они должны быть легко доступны из другого исполняемого файла простого языка Си.
Вам понадобится заголовочный файл:
#ifndef __OBJC__
typedef void* id;
#endif
id api_getlocation();
const char* api_location_to_text(id location);
void api_free_location(id location);
и код (1):
id api_getlocation()
{
CLLocationManager * locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
//[locationManager setDelegate:self];
CLLocation* location = [locationManager location];
return [location retain];
}
const char* api_location_to_text(id location)
{
NSString* newText = [NSString stringWithFormat: @"Your Position : %f %f", [location horizontalAccuracy], [location verticalAccuracy]];
return strdup([newText UTF8String]);
}
void api_free_location(id location)
{
[location release];
}
Тогда вы можете использовать его из кода C, включая ваш заголовочный файл и вызывая эти функции C.
NB : если вы свяжетесь с библиотекой времени исполнения target-c, вы также сможете напрямую отправлять сообщения объектам, вызывая objc_sendMsg
, но это окажется проблемой .. ..
(1) Я не проверял, действительно ли код объективного c имеет смысл.