我正在使用我的第一个Swift / BLE应用程序,并注意到如果中央管理器断开连接回叫的参数标签不匹配或者#34; _"使用回调永远不会被解雇。作为Swift的新手,我认为标签只是为了可读性,但显然它们用于匹配功能回调。那是准确的吗?
这有效:
// Called when disconnected from BLE device
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)
但删除或更改" didDisconnectPeripheral" to" didDisconnect"或" _"防止回电发生。
答案 0 :(得分:1)
函数centralManager(_:didDisconnectPeripheral:error:)
是CBCentralManagerDelegate
协议的可选方法,这意味着如果您在符合协议时未实现错误,则不会收到错误。但是,参数标签是函数签名的一部分,因此删除它们会使函数与协议方法不同,因此如果使用错误的参数标签/名称声明它,它将不会被协议调用。
但是,如果您将函数声明更改为与协议中的声明不匹配的内容,则应收到警告,指出Instance method 'centralManager(central:didDisconnectPeripheral:error:)' nearly matches optional requirement 'centralManager(_:didDisconnectPeripheral:error:)' of protocol 'CBCentralManagerDelegate'
。