2013-04-06 2 views
13

Я пытаюсь подключиться к устройству Bluetooth BTLE. У меня нет проблем с обнаружением периферии.iOS6: CBPeripheral освобождается при подключении

Однако, когда я пытаюсь подключиться к периферии, я получил следующее предупреждение.

2013-04-05 22: 10: 36,110 CoreBluetooth [ПРЕДУПРЕЖДЕНИЕ] 7DA9E322-D710-081B-4A9D-526DE546B13C, Name = "Find My Car Smarter", IsConnected = НЕТ> в настоящее время dealloc'ed при подключении

Кроме того, ни один из соответствующих методов делегата называются:

didConnectPeripheral: 
didFailToConnectPeripheral: 

Я боролся с этим в течение нескольких часов ... Пожалуйста, помогите.

+0

Вы используете ARC? – Larme

ответ

37

Короткий ответ: вам необходимо сохранить периферийное устройство.

Длительное объяснение: Core Bluetooth не знает, интересуетесь ли вы этим периферийным устройством, когда оно обнаружено. Недостаточно подключения к нему, вам нужно его сохранить.

Добавьте свойство в классе, где вы делаете все, что:

@property (strong) CBPeripheral  *connectingPeripheral; 

А затем присвоить периферийное этому свойству, когда устройство обнаружено, прежде чем вернуться из didDiscoverPeripheral:

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI 
{ 
    DDLogVerbose(@"Discovered peripheral: %@ advertisement %@ RSSI: %@", [peripheral description], [advertisementData description], [RSSI description]); 

    [central connectPeripheral:peripheral options:nil]; 
    self.connectingPeripheral = peripheral; 
} 
+0

Это сделало трюк! Это сводило меня с ума ... Большое спасибо! – user2247438

+4

Пожалуйста, подтвердите ответ (зеленый галочка рядом с ним). Это помогает людям понять, что этот ответ работает, и я получаю еще несколько очков и значков;) – sarfata

+0

У меня такая же проблема. Я сохраняю ссылку в массиве, но когда я пытаюсь подключиться, я получаю эту же ошибку. @property NSMutableArray * heartRateMonitors; [self setHeartRateMonitors: [[NSMutableArray alloc] init]]; [[self heartRateMonitors] addObject: периферийное]; Если я храню его в отдельной переменной, как ваш пример, проблема уходит. Любая идея, что я сделал неправильно? –

Смежные вопросы