Core-bluetooth - 是否可以做同步读取?
问题描述:
我正在构建一个物联网设备,并且我有非常好的异步读取,但我需要执行同步读取。我被告知这是可能的Android上,因为有一种方法,基本上读取缓冲区,因为它来。Core-bluetooth - 是否可以做同步读取?
我想知道如果核心蓝牙支持类似的东西,或者如果有人有一个聪明的办法呢?
答
任何异步操作都可以通过阻塞进行同步,直到操作完成。您可以使用队列或锁来阻止。
NSLock *lock = [[NSLock alloc] init];
[thing doSomethingAsynchronousWithCompletion:^{
[lock unlock];
}];
[lock lock];
不要这样做。永远不会。
您不应该阻止。您的异步代码的完成处理程序应该触发导致您的代码继续的事件。
[thing doSomethingAsynchronousWithCompletion:^(NSData *readData){
[dataProcessor processData:readData];
}];