Семантическая проблема Arc: нет видимого @interface для 'CSRGaia', объявляет селектор 'getUserEQ:' - PullRequest
0 голосов
/ 19 марта 2019

Я работаю над реактивным проектом, для которого требуются некоторые собственные модули. Одним из них является модуль Bluetooth, который позволяет мне получить доступ к некоторым методам CSRGaia. В конечном счете, я хочу быть в состоянии прочитать значения эквалайзера на клавише PS, чтобы я мог установить свой эквалайзер на соответствующие значения. Я почти ничего не знаю о Objective-C

В настоящее время существует метод, который выглядит следующим образом:

RCT_EXPORT_METHOD(setEQValues:(NSArray *)values callback:(RCTResponseSenderBlock)callback)
{
    CSRPeripheral *connectedPeripheral = [CSRConnectionManager sharedInstance].connectedPeripheral;
    if( connectedPeripheral == nil )
    {
        callback(@[DISCONNECTED]);
        return;
    }
    [[CSRGaia sharedInstance] setEQValues:values];
}

Это работает без проблем. Тем не менее, когда я пытался написать свой собственный

RCT_EXPORT_METHOD(getUserEQ: (NSArray *)values callback:(RCTResponseSenderBlock)callback) 
{
    CSRPeripheral *connectedPeripheral = [CSRConnectionManager sharedInstance].connectedPeripheral;
    if( connectedPeripheral == nil) 
    {
        callback(@[DISCONNECTED]);
        return;
    }
    [[CSRGaia sharedInstance] getUserEQ: values];
}

Я получаю следующую ошибку:

Нет видимого @interface для 'CSRGaia', объявляет селектор 'getUserEQ:'

Я дважды проверил файл CSRGaia.m, чтобы убедиться, что оба метода существуют.

- (void)setEQValues:(NSArray *)values {
    NSMutableData *payload = [[NSMutableData alloc] init];
    for( NSNumber *value in values ) {
        uint8_t hex = [value unsignedCharValue];
        [payload appendBytes:&hex length:1];
    }
    [self sendCommand:GaiaCommand_SET_HEP_EQ_PSKEY
               vendor:CSR_GAIA_VENDOR_ID
                 data:payload];
}

- (void)getUserEQ {
    [self sendCommand:GaiaCommand_GetUserEQControl
               vendor:CSR_GAIA_VENDOR_ID
                 data:nil];
}

1 Ответ

0 голосов
/ 20 марта 2019

вы вызываете этот метод:

'getUserEQ:'

обратите внимание на двоеточие 2 точки

оно отличается от метода

'getUser'

без двоеточия

и в вашем .m файле есть только

- (void)getUserEQ {}

Я думаю, вы хотите использовать метод установки вместо

- (void)setEQValues:(NSArray *)values{}

как это:

[[CSRGaia sharedInstance] setEQValues: values];

добавить в любом случае оба

- (void)getUserEQ;
- (void)setEQValues:(NSArray *)values;

в файле CSRGaia.h

между

@interface OSRGaia

и

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...