如何在iOS应用程序中优先考虑可撤销的操作/角色?

如何在iOS应用程序中优先考虑可撤销的操作/角色?,ios,bluetooth-lowenergy,cbcentralmanager,cbperipheralmanager,Ios,Bluetooth Lowenergy,Cbcentralmanager,Cbperipheralmanager,这是一个奇怪的例子,但我们已经编写了一个监控iOS应用程序,它做了两件事:(1)充当从设备获取数据的BLE中心,(2)充当BLE外围设备,将数据传输到另一个观察iOS应用程序(我们也编写了) monitor iOS应用程序从设备获取的数据远比它传输到observer iOS应用程序的数据重要,因为它必须以最小的延迟在屏幕上显示这些数据。事实上,我们进行了延迟检查,以确保在200毫秒左右的时间内接收并显示这些数据。向观察员BLE app传输数据是较低优先级的功能。但是,我们目前已经编写了它,以便从

这是一个奇怪的例子,但我们已经编写了一个监控iOS应用程序,它做了两件事:(1)充当从设备获取数据的BLE中心,(2)充当BLE外围设备,将数据传输到另一个观察iOS应用程序(我们也编写了)

monitor iOS应用程序从设备获取的数据远比它传输到observer iOS应用程序的数据重要,因为它必须以最小的延迟在屏幕上显示这些数据。事实上,我们进行了延迟检查,以确保在200毫秒左右的时间内接收并显示这些数据。向观察员BLE app传输数据是较低优先级的功能。但是,我们目前已经编写了它,以便从设备(a)进入的每个数据点更新屏幕,然后(b)写入本地特征(作为外围设备),以便观察iOS应用程序(作为中心设备)读取

我们看到的是,当观察者iOS应用程序观察到监控iOS应用程序时,有时监控iOS应用程序未通过延迟检查。我们希望这种情况永远不会发生,我们希望只有在对来自设备的传入数据进行维护后,在时间允许的情况下,数据才会传输给观察者

是否有一种方法可以将其结构化,以便监控iOS应用程序将优先使用BLE上的传入数据,而不是通过BLE发送传出数据?或者,是否有一种方法可以减少向中央计算机传输可恢复数据的时间?也许我可以减少握手或其他一些事情,让它在发送端要求更少


欢迎有任何想法。谢谢。

您是否正在使用其他队列执行写入操作?显示一些代码。这将是很多代码。。。与其说是调试问题,不如说是一个方法问题。不,两端都没有队列。当我们接收一个值(10Hz)时,我们用该值更新屏幕。然后我们只需将相同的值写入BLE特性。虽然解释这一点让我觉得我应该把它解耦,这不会太难。。。谢谢是的,您可能太依赖主线程了。使用实用程序QoSMaybe将写操作分派到另一个串行队列,您也可以尝试使用不同的连接间隔。