从另一个类调用方法,未传递变量

时间:2017-04-11 16:03:19

标签: ios objective-c class core-bluetooth instances

我试图将IOS中的十六进制数据发送到蓝牙外设。我有一个第三方键盘,我自定义,以便一个名为SEND的按钮消除键盘,并将信息从文本字段发送到指定的称为控制的特征。

我有两个班级:

MRHexKeyboard BTLECentralViewController

如果我使用BTLECentralViewController上的按钮,发送功能正常工作,但是当我从键盘调用发送功能时,这不再有效,因为没有要写入的特性。

在BTLECentralViewController中:

-(IBAction)sendCmdControl:(id)sender;{
    //When button is pressed send data
    [self sendDataCMD];

}

-(void)sendDataCMD{
    if (!_control) {
        NSLog(@"No Characteristic to write to");
        return;
    }
    //sending commandToSend to characteristic 'control'
    [self.discoveredPeripheral writeValue:commandToSend forCharacteristic:self.control type:CBCharacteristicWriteWithResponse];
}

现在,当我将这种形式称为键盘方法时,我就这样做了

MRHexKeyboard:

 BTLECentralViewController* myScript = [[BTLECentralViewController alloc] init]; 
 [myScript sendDataCMD]; 

我遇到的问题是:方法运行但没有发送数据的特性,因此变量尚未传递。

我相信它是因为类MRHexKeyboard没有看到在BTLECentralViewController中声明的子句??

@property (strong, nonatomic) CBCentralManager      *centralManager;
@property (strong, nonatomic) CBPeripheral          *discoveredPeripheral;

如何让其他类可以访问它们?

我对iOS和ObjectiveC非常新鲜。

1 个答案:

答案 0 :(得分:0)

通过查看代码,我可以建议创建一个CBCentralManager和CBPeripheral的单例对象,因此在初始化ViewController时它不会是nil。或者您可以创建一个BLEManager单例类来执行所有活动。