首页 > 解决方案 > CoreBluetooth:CBCharacteristic/service -> EXC_BAD_ACCESS

问题描述

在使用 的iOS应用程序中CoreBluetooth,我有一个包含类型对象的数组(名为 characArray)CBCharacteristic

当一个元素被添加到数组中时:

characArray.append(element)

我使用以下方法检查元素:

print("element.service = \(element.service)")
print("element.service.uuid = \(element.service.uuid)")

到目前为止,我从未发现任何问题。

在代码里面我也有这个循环:

for x in characArray {
    print("x.service = \(x.service)")
    print("x.service.uuid = \(x.service.uuid)")
}

它通常运行良好,但在某些情况下会崩溃。

使用调试器仔细查看正在发生的事情时。

x 变量看起来很好,但 x.service(以及 x.service.uuid)会产生错误消息:

error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=1, address=0x1923456...).

x.service 为 nil 甚至不会发生,因此测试 (x.service != nil) 不是一种选择。所以问题是:如何控制流程并看到我不应该执行:

print("x.service = \(x.service)")

听起来 x 变量在某些时候已经丢失(释放?)。有没有方便的方法来检查哪里?

标签: iosswiftcore-bluetooth

解决方案


推荐阅读