Я столкнулся с той же проблемой, и, наконец, прибегли к этому:
UIDevice *currentDevice = [UIDevice currentDevice];
if ([currentDevice.model rangeOfString:@"Simulator"].location == NSNotFound) {
self.centralMgr = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
на тренажере, если я не защититесь от создания CBCentralManager, я вижу centralManagerDidUpdateState: вызывается с CBCentralManager *, который соответствует моему сильному свойству. На него можно ссылаться, а состояние - CBCentralManagerStateUnsupported. Это имеет смысл, но если я нахожусь в моем сильном управляющем свойстве в этот момент (так как я не собираюсь делать BLE на симуляторе, который его не поддерживает), я получаю EXC_BAD_ACCESS. Поэтому, в отсутствие лучшего ответа, я предлагаю вам просто защититься от стрельбы по менеджеру вообще, как в моем коде выше.