首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复CBPeripheralManager的传输队列已满?

如何修复CBPeripheralManager的传输队列已满?
EN

Stack Overflow用户
提问于 2014-04-23 17:38:31
回答 1查看 540关注 0票数 1

我在CBPeripheralManager的方法中有一个问题。

代码语言:javascript
复制
- (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals

根据Apple documentation的说法,如果可以发送更新,它将返回YES,如果底层传输队列已满,则返回NO

我要去找NO。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2014-04-25 13:46:02

当输出队列已满时,您需要延迟发送响应。

工作队列方案。解决此问题的最简单方法是创建一个worker queue,在其中插入要发送的数据块,并创建一个dispatcher块,该块获取项目并将其发送出去。当队列已满时,当前块被放回队列的头部,在接收到peripheralManagerIsReadyToUpdateSubscribers:之后,您将尝试再次发送。如果中心已断开连接或由于其他原因导致连接中断,则应取消所有发送。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23240447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档