CoreBluetooth: CBCхарактеристика / сервис -> EXC_BAD_ACCESS - PullRequest
0 голосов
/ 10 апреля 2019

В приложении 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 была потеряна (освобождена?) В какой-то момент,Есть удобный способ проверить где?

...