我有两个视图控制器(ViewController和SecondViewController)。
SecondViewController是一个以弹出窗口形式显示的tableView。该tableView将列出所有发现的BLE设备,当用户点击单元格时,它将连接到所选设备。
一切都正常工作,直到用户解除弹出窗口,当弹出窗口关闭时,下面的错误会立即被打印出来:[CoreBluetooth] XPC connection invalid
我正在使用协议委托来传递外围设备和特征。
以下是我的SecondViewController中的内容:
protocol PassDataDelegate {
func passPeripheral(_ deviceToConnect: CBPeripheral!)
func passCharacteristic(_ char: CBCharacteristic!)
}
class SecondViewController: UIViewController, CBPeripheralDelegate {
...
var peripherals = Array<CBPeripheral>()
var deviceToConnect: CBPeripheral?
var char: CBCharacteristic?
var deviceReady: Bool?
var delegate: PassDataDelegate?
...
}
//passing variables
delegate?.passPeripheral(deviceToConnect!)
delegate?.passCharacteristic(char!)
以下是我在视图控制器中的代码:
extension ViewController: PassDataDelegate {
func passPeripheral(_ device: CBPeripheral!) {
self.device = device
}
func passCharacteristic(_ characteristic: CBCharacteristic!) {
self.characteristic = characteristic
self.deviceReady = true
}
}
在我的某个 ViewController 中,我在一个 If 语句中使用了 deviceReady。但是它显示 Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value。
看起来协议函数没有被调用?
我能得到一些帮助吗?
SecondViewController
在 dismiss 后是否被正确释放?我认为delegate
应该是一个weak
属性。 - vpoltavevar delegate: PassDataDelegate?
属性赋值吗? - vpoltave