Есть ли способ в Swift для вызова функции Objective-C ++, которая была определена внутри @implementation? - PullRequest
0 голосов
/ 01 марта 2020

Я изо всех сил пытался внедрить kalman- ios в мой проект Swift. Проект kalman- ios полностью написан на Objective-C ++.

Недавно я узнал, как вызывать функции Objective-C ++ из этого видеогида

Выпуск

Моя проблема в том, что я могу делать вызовы обычных функций, но ни одной из них, которые находятся внутри @implementation. Например: I не может успешно соединить Swift с didReadAccelerometer

@interface KFAppDelegate ()
...
- (void)didReadAccelerometer:(CMAccelerometerData *)data;

@implementation KFAppDelegate
...
- (void)didReadAccelerometer:(CMAccelerometerData *)data
{
    //  gyro or compass data not available yet, wait until next update
    if (!self.gyroData || !self.magnetometerData)
        return;
    self.accelData = data;

    //  run filter
    [self performKalmanUpdate];

    //  send state to server
    [self transmitState];

    //  discard old data
    self.accelData = nil;
    self.gyroData = nil;
}

I может успешно соединить Swift с getTime, поскольку он не находится внутри @ реализаций

double getTime()
{
    // mach_absolute_time() returns billionth of seconds
    const double kOneBillion = 1000000000.0;
    return getTime_ns() / kOneBillion;
}

С заголовочным файлом моста, который содержит:

#ifdef __cplusplus
extern "C" {
#endif

double getTime();

#ifdef __cplusplus
}
#endif

Мне нужно разобраться с функциями в @implementation, потому что они используют переменные уровня класса.

Есть ли способ использовать эти функции в Swift?

Спасибо за любую помощь, которую вы можете оказать!

...