是什么导致iOS中的CBCentralManagerStateUnknown?

woz*_*woz 11 objective-c ios core-bluetooth

CBCentralManagerStateUnknown使用这个简单代码时,为什么要使用iPad 2?

- (BOOL)viewDidLoad {

    bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

    if ([manager state] == CBCentralManagerStatePoweredOff) NSLog(@"CBCentralManagerStatePoweredOff");
    if ([manager state] == CBCentralManagerStatePoweredOn) NSLog(@"CBCentralManagerStatePoweredOn");
    if ([manager state] == CBCentralManagerStateResetting) NSLog(@"CBCentralManagerStateResetting");
    if ([manager state] == CBCentralManagerStateUnauthorized) NSLog(@"CBCentralManagerStateUnauthorized");
    if ([manager state] == CBCentralManagerStateUnknown) NSLog(@"CBCentralManagerStateUnknown");
    if ([manager state] == CBCentralManagerStateUnsupported) NSLog(@"CBCentralManagerStateUnsupported");

}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚是什么CBCentralManagerStateUnknown意思.我该怎么办?在苹果的文档只是说:

状态不明,即将更新.

连接蓝牙设备时,以及蓝牙关闭时,我得到此响应.如果我尝试运行类似的东西[manager retrieveConnectedPeripherals],我也会在控制台中收到此消息:

CoreBluetooth[WARNING] <CBConcreteCentralManager: ...> is not powered on
Run Code Online (Sandbox Code Playgroud)

Bar*_*nas 16

我知道为什么委托从未被调用过.因为该对象已从内存中删除.只是做一个强大的财产

@property (strong, nonatomic) DiscoverBluetoothDevices *btDevices;

并在初始化

@implementation DiscoverBluetoothDevices
- (id) init
{
    self = [super init];
    if(self) {
        centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];
        [centralManager scanForPeripheralsWithServices:nil options:@{CBCentralManagerScanOptionAllowDuplicatesKey: @YES}];

    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

现在委托被正确调用.