2013-12-18 7 views
1

Когда я отключить дубликата фильтрацию ключа с помощью: CoreBluetooth - Отключение дубликат ключа фильтра вызывает предупреждение

NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBCentralManagerScanOptionAllowDuplicatesKey]; 

Сборка и запуск отлично работает (и захватывает все рекламные пакеты), но она всегда производит эту ошибку первого:

«CoreBluetooth [ВНИМАНИЕ] является отключение дубликата фильтрации, но с использованием очереди по умолчанию (основной поток) для делегатов событий»

Я могу остановить предупреждение показывать, если я добавлю:

dispatch_queue_t centralQueue = dispatch_queue_create("central", DISPATCH_QUEUE_SERIAL); 

прямо перед тем, как создать экземпляр CBCentralManager и установить аргумент очереди на centralQueue. Это правильный способ решить эту проблему? Или есть лучший способ?

Благодаря

+1

Нет лучшего способа. Вы делаете все правильно. – allprog

+0

Думаю, вы поступаете правильно. iOS создает предупреждение, потому что игнорирование дублирующего ключа может занять больше времени/процессор или что-то в этом роде. – Larme

ответ

2

Просто так есть правильный ответ:

Настройка параметров сканирования, чтобы дубликаты могут ухудшить общую производительность, если CBCentralManager настроен для работы на основной очереди. Лучше всего запустить CBCentralManager в отдельной очереди, если вам нужно разрешить дубликаты.

dispatch_queue_t centralQueue = dispatch_queue_create("mycentralqueue", DISPATCH_QUEUE_SERIAL); 
_centralManager = [[CBCentralManager alloc]initWithDelegate:self queue:centralQueue];