1

メソッド connectPeripheral は、CBCentralManagerDelegate を持つクラスで定義されます。didSelectRowAtIndexPath が選択されているときに、テーブル ビュー コントローラーから connectPeripheral を呼び出す必要があります。周辺機器が接続されると、View Controller 内のコードの残りの行を引き続き実行する必要があります。ペリフェラルに接続できます。ただし、接続が完了する前に、コードの残りのセクションが実行されます。周辺機器はまだ接続されていないため、必要な作業を行いません。

接続が確立され、残りのコードが実行されることを確認するためにdispatch_syncを使用しましたが、機能しません。どうすればこの問題を回避できますか? 私はIOSプログラミングに比較的慣れていません。どんな入力でも大歓迎です。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    CBPeripheral    *peripheral = nil;
    NSArray         *devices = [[NSArray alloc] init];

    switch (indexPath.section) {
            case 0: {
                devices = [[BTLECentralManager sharedInstance] foundPeripherals];
                peripheral = (CBPeripheral *)[devices objectAtIndex:indexPath.row];
                    dispatch_sync(syncConnection, ^{
                        [[BTLECentralManager sharedInstance] connectPeripheral:peripheral];
                        activePeripheral = [self serviceForPeripheral:peripheral];
                        NSLog(@"Active Peripheral %@",activePeripheral);
                        [activePeripheral getTimeDate];
                    });

                break;
                }
            default:
            break;
        }
}
4

1 に答える 1