Arc 语义问题:没有“CSRGaia”的可见@interface声明选择器“getUserEQ:”

Arc Semantic Issue: No visible @interface for 'CSRGaia' declares the selector 'getUserEQ:'

提问人:VK1 提问时间:3/19/2019 更新时间:3/20/2019 访问量:148

问:

我正在做一个需要一些原生模块的 react-native 项目。其中之一是蓝牙模块,允许我访问一些 CSRGaia 方法。最终,我希望能够读取 PS 键上的 eq 值,以便我可以将均衡器设置为相应的值。我对 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];
}

我收到以下错误:

“CSRGaia”没有可见@interface声明选择器“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];
}
Objective-C 方法 蓝牙

评论

0赞 Amin Negm-Awad 3/19/2019
这就是实现。显示 的界面。它以标头开头,通常位于标头中。(后缀为 .h 的文件。CSRGaia@interface OSRGaia

答:

0赞 meronix 3/20/2019 #1

您正在调用此方法:

'getUserEQ:'

注意 2 个点冒号

它与方法不同

“获取用户”

无冒号

而在你的.m文件中,只有

- (void)getUserEQ {}

我猜你想改用 setter 方法

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

喜欢这个:

[[CSRGaia sharedInstance] setEQValues: values];

无论如何都要添加

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

在 CSRGaia.h 文件中

之间

@interface OSRGaia

@end