2013-12-18 48 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實例並將queue參數設置爲centralQueue之前。這是解決這個問題的正確方法嗎?或者,還有更好的方法?

感謝

+1

有沒有更好的辦法。你做得對。 – allprog

+0

我認爲你做得對。 iOS創建一個警告,因爲忽略重複鍵可能需要更多次/ CPU或類似的東西。 – Larme

回答

2

正是這樣有一個合適的回答:

設置掃描選項,允許重複可能會降低整體性能,如果CBCentralManager是設置到主隊列中運行。如果您需要允許重複,最好在單獨的隊列上運行CBCentralManager。

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