CoreBluetooth - 禁用重复密钥过滤器会导致警告

时间:2013-12-18 15:02:20

标签: queue core-bluetooth cbcentralmanager

当我使用以下方法禁用重复密钥过滤时:

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

构建和运行正常(并捕获所有广告包)但它总是首先产生此错误:

“CoreBluetooth [警告]禁用重复过滤,但正在使用默认队列(主线程)进行委托事件”

如果我添加,我可以停止显示警告:

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

在我创建CBCentralManager实例并将队列参数设置为centralQueue之前。这是解决此问题的正确方法吗?或者有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:2)

这样有一个正确的答案:

如果将CBCentralManager设置为在主队列上运行,则将扫描选项设置为允许重复可能会降低整体性能。如果需要允许重复,最好在单独的队列上运行CBCentralManager。

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