2017-05-10 48 views
0

我正在構建一個物聯網設備,並且我有非常好的異步讀取,但我需要執行同步讀取。我被告知這是可能的Android上,因爲有一種方法,基本上讀取緩衝區,因爲它來。Core-bluetooth - 是否可以做同步讀取?

我想知道如果核心藍牙支持類似的東西,或者如果有人有一個聰明的辦法呢?

回答

1

任何異步操作都可以通過阻塞進行同步,直到操作完成。您可以使用隊列或鎖來阻止。

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

[lock lock]; 

不要這樣做。永遠不會。

您不應該阻止。您的異步代碼的完成處理程序應該觸發導致您的代碼繼續的事件。

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