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

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

Discarding message for event 0 because of too many unprocessed messages 

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

这是苹果技术支持所说的(在为开发者技术支持事件支付49美元之后):

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

迈克尔是对的,原因是位置pipe理器只能在运行循环的线程上运行(默认是主线程),否则它发送的callback将不会被处理。 一旦我尝试在后台线程上初始化Zoosh SDK,请看下面的警告:

注意,位置pipe理器(0x11b5c9d0)是在主线程以外的线程上执行的分派队列上创build的。 确保在分配了位置pipe理器对象的线程上运行的运行循环是开发人员的责任。 尤其是,在任意调度队列(不附加到主队列)中创build位置pipe理器不受支持,并且会导致不能接收callback。

很明显。 并且将初始化放入主线程会清除此警告,并且不会发生“由于太多未处理的消息而丢弃事件0的消息”。