2017-05-10 46 views
0

我正在构建一个物联网设备,并且我有非常好的异步读取,但我需要执行同步读取。我被告知这是可能的Android上,因为有一种方法,基本上读取缓冲区,因为它来。Core-bluetooth - 是否可以做同步读取?

我想知道如果核心蓝牙支持类似的东西,或者如果有人有一个聪明的办法呢?

回答

1

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

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

[lock lock]; 

不要这样做。永远不会。

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

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