0

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), ^{}

作業をバックグラウンド スレッドにオフロードしたいのですが、シリアル キュー タイプの方法で実行します。

世界で何が起こっているのですか:(

4

0 に答える 0