Reputation: 151
I'm building a IoT device and I have asynchronous reads working great, but I need to perform a synchronous read. I've been told this is possible on Android as there is a method that basically reads the buffer as it comes in.
I'm wondering if Core-bluetooth supports something similar or if anyone has a clever approach to this?
Upvotes: 0
Views: 270
Reputation: 162712
Any asynchronous operation can be made synchronous by blocking until the operation completes. You can use a queue or a lock to block.
NSLock *lock = [[NSLock alloc] init];
[thing doSomethingAsynchronousWithCompletion:^{
[lock unlock];
}];
[lock lock];
Do not do this. Not ever.
You shouldn't block. Your asynchronous code's completion handler should trigger an event that causes your code to continue.
[thing doSomethingAsynchronousWithCompletion:^(NSData *readData){
[dataProcessor processData:readData];
}];
Upvotes: 1