ユーザーが Bluetooth 経由でデータを送信できる iOS アプリを設計しています。アプリで Bluetooth を使用するのはこれが初めてで、ベスト プラクティス、特にデータ転送を別のスレッドで処理する必要があるかどうかについて疑問に思っています。
CBPeripheralManager
がサブスクライブに接続すると、データCBCentralManager
を送信するループは次のようになります。
while (didSend) {
NSData *blob = /* some data */
didSend = [self.manager updateValue:blob
forCharacteristic:self.characteristic
onSubscribedCentrals:nil]
}
これがメイン スレッドで実行される場合、これはユーザーがアプリの制御を失うことを意味しますか? たとえば、ユーザーがアプリなどを閉じてトランザクションをキャンセルしたい場合、CBPeripheralManager
何らかの方法で中止するように伝えることができますか、それともループが終了するまで待たなければなりませんか? 後者の場合、この問題を回避する最善の方法は何ですか?