在实现CBCentralManagerDelegate
协议的过程中,我具有以下功能。
func centralManager(_ central: CBCentralManager,
didDisconnectPeripheral peripheral: CBPeripheral,
error: Error?) {
print(#function)
if error != nil {
print("Error in \(#function) :\n\(error!)")
return
}
......
// More useful code irrelevant to the question.
}
调用上述函数后,我可以在Xcode
调试控制台中看到以下消息。
centralManager(_:didDisconnectPeripheral:error:)
Error in centralManager(_:didDisconnectPeripheral:error:) :
Error Domain=CBErrorDomain Code=7 "The specified device has disconnected from us."
UserInfo={NSLocalizedDescription=The specified device has disconnected from us.}
这是我的问题: 我一定会丢失一些东西(因为太简单或太微妙),但为什么会显示错误,因为“ 指定的设备已与我们断开连接。”
在 centralManager:didDisconnectPeripheral 函数中,除了断开设备连接外,我还能期待什么?
我希望一些开明的专家能为您解释一下为什么会这样。
答案 0 :(得分:1)
根据Apple文档:
If the disconnection was not initiated by cancelPeripheralConnection(_:), the cause is detailed in error.
也就是说,如果您断开连接,则不会出现任何错误,但是如果他们断开连接,则会通过错误看到这一点。 来源:https://developer.apple.com/documentation/corebluetooth/cbcentralmanagerdelegate/1518791-centralmanager