Tag: 低功耗蓝牙

串行异步操作队列

什么是OperationQueue 从Apple文档 操作队列 根据它们的优先级和准备情况 执行其排队的 Operation 对象。 在将操作添加到操作队列之后,该操作将保留在其队列中,直到它报告完成任务为止。 添加操作后,您无法直接从队列中删除该操作。 OperationQueue具有一个名为maxConcurrentOperationCount的属性,您可以将其设置为1,以使串行 OperationQueue在操作为同步操作时可以完美地工作。 问题 当我想要将其发送到蓝牙时,检测到传感器框架之间存在干扰。 发生了什么事!🤔我们使用很多“ @synthesize”关键字来确保线程安全并防止传感器线程之间的任何干扰。 然后我寻找最佳解决方案,最后我找到了maxConcurrentOperationCount I 那就是我需要的,它将解决我的问题 我开始重构1Sheeld的代码以使用maxConcurrentOperationCount. 不幸的是,干扰仍然发生。 我相信在文档中只能同时执行一个操作,但这并不是为什么。 如果操作同步,则 maxConcurrentOperationCount 可以完美地工作,但是如果该操作是异步的(例如调用API请求或使用蓝牙发送数据),则该操作将无用。 那简单的代码显示了问题 创建操作