核心蓝牙 - 是否可以进行同步读取?

时间:2017-05-10 15:30:47

标签: objective-c core-bluetooth

我正在构建一个IoT设备,我的异步读取工作得很好,但我需要执行同步读取。我被告知这在Android上是可行的,因为有一种方法基本上可以读取缓冲区。

我想知道Core-bluetooth是否支持类似的东西,或者是否有人对此有聪明的方法?

1 个答案:

答案 0 :(得分:1)

可以通过阻塞使任何异步操作同步,直到操作完成。您可以使用队列或锁来阻止。

NSLock *lock = [[NSLock alloc] init];
[thing doSomethingAsynchronousWithCompletion:^{
     [lock unlock];
 }];

 [lock lock];

不要这样做。永远不会。

你不应该阻止。您的异步代码的完成处理程序应该触发一个导致代码继续的事件。

[thing doSomethingAsynchronousWithCompletion:^(NSData *readData){
     [dataProcessor processData:readData];
 }];