CBPeripheralManager AddService上的iOS崩溃断言失败:

时间:2017-07-17 04:37:38

标签: ios crash bluetooth-lowenergy

我在iOS CoreBluetooth上遇到崩溃问题  [CBPeripheralManager AddService:]

似乎是由于addService方法中的断言失败而发生的。尝试了这么多方法,仍然无法弄清楚问题。

根据我的理解,这不是空指针异常,因为我已经测试过将nil值作为AddService参数传递,产生不同的问题。

我已经实现了CBPeripheralManager的所有代表,包括CBCentral代表。

一般来说它工作正常。通常情况下我无法重现这个问题。但它突然发生。

请帮忙 。 崩溃日志:

0   CoreFoundation                 0x18b3cafe0 __exceptionPreprocess + 124
1   libobjc.A.dylib                0x189e2c538 objc_exception_throw + 56
2   CoreFoundation                 0x18b3caeb4 +[NSException raise:format:arguments:] + 104
3   Foundation                     0x18be62720 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112
4   CoreBluetooth                  0x1922ab420 -[CBPeripheralManager addService:] + 820
5   MyApp                        0x10110e1f4 -[MyPeripheralManager addServiceIntoPeripheralManager] (MyPeripheralManager.m:202)

Code Snipet:

-(void)addService{
if (!isServiceAdded) {
    CLLog("Add Service timer started");
    [backgroundTaskManager manageBackgroundRunningTask];
    /*
     AddService will be called after 5 seconds
     when application launching finished or iOS BT on
     */
    [self performSelector:@selector(addServiceIntoPeripheralManager) withObject:self afterDelay:SERVICE_ADDING_DELAY]; // 5 secs

} else {
    CLDbg("Service already added");
}
}
- (void)addServiceIntoPeripheralManager{
CLLog("Add Service timer expired");
CLDbg("Service Adding: %@", [UUIDString]);
[cbPeripheralManager addService:Service];
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

您没有实施BluetoothManager的回调更新

请参阅this answer

This answer

我希望这会对你有所帮助