我正在尝试使用 CoreBluetooth 框架,并且我创建了一个帮助器类 (btHelper) 以使代码更易于维护等。
问题是,在这个帮助类中,委托方法不再像原来那样被调用,当所有东西都被压缩到大类中时。是的,我已经在助手类的 .h 中设置了委托方法,是的,我已经将对象 CBCentralManager 委托设置为 self。我所做的几乎所有事情都和在一个班级里时一样。我相信它与主线程有关,但我在这方面的经验很少。
具体来说,我想要调用的委托方法是
-(void)centralManagerDidUpdateState:(CBCentralManager *)central
谁能告诉我我必须做什么才能让代表调用在这个助手类中正常工作?谢谢!
下面是PrimaryViewController类和btHelper类
btHelper.m
-(void) activateBluetooth
{
self.manager= [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
//DELEGATE METHOD THAT NEVER GETS CALLED. SHOULD BE CALLED AS SOON AS self.manager is initiated
self.isAvailable=FALSE;
switch (central.state) {
case CBCentralManagerStatePoweredOff:
NSLog(@"CoreBluetooth BLE hardware is powered off");
break;
case CBCentralManagerStatePoweredOn:
NSLog(@"CoreBluetooth BLE hardware is powered on and ready");
self.isAvailable=TRUE;
break;
case CBCentralManagerStateResetting:
NSLog(@"CoreBluetooth BLE hardware is resetting");
break;
case CBCentralManagerStateUnauthorized:
NSLog(@"CoreBluetooth BLE state is unauthorized");
break;
case CBCentralManagerStateUnknown:
NSLog(@"CoreBluetooth BLE state is unknown");
break;
case CBCentralManagerStateUnsupported:
NSLog(@"CoreBluetooth BLE hardware is unsupported on this platform");
break;
default:
break;
}
}
PrimaryViewController.m
-(IBAction)connect
{
btHelper *bluetoothManager= [[btHelper alloc]init];
[bluetoothManager activateBluetooth];
}