调用另一个类的方法,不通过的变量
问题描述:
我可能试图从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非常新鲜。
答
通过查看您的代码,我可以建议创建一个CBCentralManager和CBPeripheral的单例对象,所以在初始化ViewController时它不会为零。或者你可以创建一个BLEManager单例类来执行所有的活动。
'BTLECentralViewController * myScript = [[BTLECentralViewController alloc] init]'。您正在创建一个全新的对象。 – Larme
扩展Larme的评论有点:属性在对象实例上,而不是类。一个新视图控制器的创建(alloc&init)将获得一个零中央管理器和发现的外围属性,除非您执行某些操作来调配这些属性。我不清楚你的期望。这是非常基本的面向对象的东西。 – CuriousRabbit
@CuriousRabit - >谢谢,我想我严重缺乏OO基础知识 - >你知道我在哪里可以找到这方面的一些很好的参考材料......? –