メソッド 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;
}
}