2017-05-10 2 views
0

Ich baue ein IoT-Gerät und ich habe asynchrone Lese funktioniert gut, aber ich muss einen synchronen Lesevorgang durchführen. Mir wurde gesagt, dass dies auf Android möglich ist, da es eine Methode gibt, die grundsätzlich den Puffer liest, wie er kommt.Core-Bluetooth - Ist es möglich, einen synchronen Lesevorgang durchzuführen?

Ich frage mich, ob Core-Bluetooth etwas ähnliches unterstützt oder wenn jemand einen cleveren Ansatz dazu hat?

Antwort

1

Jeder asynchrone Vorgang kann durch Blockieren synchron gemacht werden, bis der Vorgang abgeschlossen ist. Sie können eine Warteschlange oder eine Sperre zum Blockieren verwenden.

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

[lock lock]; 

Tun Sie dies nicht. Niemals.

Sie sollten nicht blockieren. Der Beendigungshandler Ihres asynchronen Codes sollte ein Ereignis auslösen, das Ihren Code fortsetzt.

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