iOS5“由于过多的未处理消息而丢弃事件0的消息”是什么意思?

问题描述 投票:46回答:2

我正在对我的应用程序进行一些性能测试,并注意到运行一些集成需要很长时间。过了一会儿,我得到了一大堆

Discarding message for event 0 because of too many unprocessed messages

在xcode控制台中。这究竟是什么意思?

ios xcode performance debugging
2个回答
93
投票

这就是Apple技术支持所说的(在支付49美元用于开发者技术支持事件之后):

这些消息来自Core Location框架。这些消息最可能的原因是在创建CLLocationManager的线程上没有运行循环。 (这意味着未在主线程上创建CLLocationManager。)正被丢弃的消息是位置消息:事件0是位置,事件24是授权状态更新。因为丢弃了消息,所以您将看不到正在调用的相应委托回调。您是否设置了地理围栏或其他一些回调并且没有足够快地为其提供服务?在开始转储事件并记录此消息之前,队列限制似乎为10。此信息尚未公开记录。我正在与Core Location团队合作改进报告的消息,看看是否可以更好地记录这些消息。


1
投票

迈克尔是对的,原因是位置管理器只能在其上运行循环的线程上运行(默认情况下是主线程),否则将不会处理由它发送的回调。一旦我尝试在后台线程上初始化Zoosh SDK,请参阅以下警告:

注意,在主线程以外的线程上执行的调度队列上创建了位置管理器(0x11b5c9d0)。开发人员有责任确保在分配了位置管理器对象的线程上运行运行循环。特别是,不支持在任意调度队列(未附加到主队列)中创建位置管理器,这将导致无法接收回调。

很明显。并且将初始化放入主线程中会清除此警告,并且不会出现“因为过多的未处理消息而丢弃事件0的消息”。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.