iOS6的:连接CBPeripheral被dealloc'ed(iOS6: CBPeriph

2019-08-20 00:28发布

我试图连接到蓝牙设备BTLE。 我没有问题,发现周围。

然而,当我尝试连接到外围,我收到以下警告。

2013年4月5日22:10:3​​6.110 CoreBluetooth [警告] 7DA9E322-D710-081B-4A9D-526DE546B13C,名称= “查找我的汽车更聪明”,IsConnected = NO>正在被同时连接dealloc'ed

此外,既没有相关的委托方法被调用:

didConnectPeripheral:
didFailToConnectPeripheral:

我一直在挣扎好几个小时了......请帮助。

Answer 1:

简短的回答:您需要保留的外围。

龙解释:核心蓝牙不知道你是否有兴趣时,发现该外设。 连接到它是不够的,你需要保留它。

一个属性添加到您正在做的所有类:

@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;
}


文章来源: iOS6: CBPeripheral is being dealloc'ed while connecting