Corebluetooth ライブラリがメイン スレッドで実行されており、viewController の UI がフリーズしているようです。これを修正するために、この関数を呼び出して CoreBluetooth デリゲートを別のスレッド (バックグラウンド スレッド) に配置したいと思います。
[self performSelectorInBackground:@selector(peripheralbackground:) withObject:_peripheral];
次のようなセレクターを実行する新しいスレッドを生成します..
- (void)peripheralbackground:(CBPeripheral *)per {
[per setDelegate:self];
[per discoverServices:[serviceNames allKeys]];
}
基本的に、メイン UI スレッド以外の別のスレッドでコールバックを呼び出したいと考えています。どんなアイデアでも大歓迎です....ありがとう
アップデート:
コールバック内で次を使用しました。ただし、関数ブロック内でいくつかの同時実行の問題が発生しています...作業をバックグラウンド スレッドにオフロードするときは、すべてが何らかのタイプの FIFO キューにある必要があると考えました。確実に糸が絡み合っているのがわかります..
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{}
作業をバックグラウンド スレッドにオフロードしたいのですが、シリアル キュー タイプの方法で実行します。
世界で何が起こっているのですか:(