我试图了解哪种是连接BLE设备的最佳方式。目前我有连接工作和配对,但一旦我改变视图我失去了与适配器的连接。
_transporter = [BLETransporter transporterWithIdentifier:nil serviceUUIDs:serviceUUIDs];
[_transporter connectWithBlock:^(NSInputStream * _Nullable inputStream, NSOutputStream * _Nullable outputStream) {
if ( !inputStream )
{
LOG( @"Could not connect to device" );
return;
}
_BLEAdapter = [BLEAdapter adapterWithInputStream:inputStream outputStream:outputStream];
[_BLEAdapter connect];
}];
上面的代码我在viewdidload中为我的初始启动屏幕调用。我有一个按钮,它被分成一个tableviewcontroller,它将列出设备所需的数据。
每当我进入tableviewcontroller时,我都添加了:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"showTCSegue"]){
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
TbliewController *controller = (TbliewController *)navController.topViewController;
controller.transporter = _transporter;
controller.BLEAdapter = _BLEAdapter;
}
}
我还将下面的代码添加到我的tableviewcontroller .h文件
@property (nonatomic) BLETransporter* transporter;
@property (nonatomic) BLEAdapter* BLEAdapter;
这不起作用。根据我的理解,这是因为我需要为两个属性添加强引用类型,以便在视图控制器之间共享它们。这是对的吗?
我还读过有关使用单身人士和共享实例执行一次的信息。这是执行和连接外围设备的更好方法吗?
每次我回到启动屏幕(应用程序的主菜单)时,都会再次调用viewdidload,并且应用程序会再次尝试配对。