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