2011-10-22 62 views
39

我正在對我的應用進行一些性能測試,並發現運行一些集成需要非常長的時間。一段時間後,我得到了一大堆的iOS5什麼「由於太多未處理的消息而丟棄事件0的消息」是什麼意思?

Discarding message for event 0 because of too many unprocessed messages 

在xcode控制檯。這是什麼意思?

+0

我也見證過這些訊息。不確定是什麼造成的。 –

+0

最近我在iOS 5.1.1上使用MapKit獲得了這條消息。無法弄清楚是什麼問題,但重新啓動我的iPhone已修復它! – applefreak

回答

79

這是什麼蘋果技術支持說這個(支付$ 49開發人員技術支持事變後):

這些消息是從Core Location框架的到來。這些消息最可能的原因是沒有在創建CLLocationManager的線程上運行的運行循環。 (這意味着CLLocationManager並未在主線程上創建。)被丟棄的消息是位置消息:例如,事件0是位置,事件24是授權狀態更新。由於消息被丟棄,您將看不到正在調用的相應代理回調。您是否設置了地理圍欄或其他回撥,並且沒有足夠快地提供服務?在開始轉儲事件並記錄此消息之前,隊列限制似乎爲10。 此信息尚未公開記錄。我正在與Core Location團隊合作來改進報告的消息並查看是否可以更好地記錄這些消息。

+0

什麼是事件1? – folex

+0

感謝您 - 本來會花一段時間敲我的頭,因爲代表回調沒有觸發。我只是在dispatch_async(dispatch_get_main_queue(),^ {...})塊中封裝了[[CLLocationManager alloc] init]以使其工作 –

+0

$ 49非常值得600個代表在我看來。 – bakalolo

1

Michael是對的,原因是位置管理器只能在運行循環的線程上運行(默認爲主線程),否則它發送的回調將不會被處理。一旦我嘗試在後臺線程上初始化Zoosh SDK,請參閱以下警告:

注意:位置管理器(0x11b5c9d0)是在除主線程以外的線程上執行的分派隊列上創建的。開發人員有責任確保在分配了位置管理器對象的線程上運行運行循環。特別是,在任意調度隊列(不附加到主隊列)中創建位置管理器不受支持,並且會導致未收到回調。

很明顯。並且將初始化放入主線程會清除此警告,並且不會出現「由於過多的未處理消息而丟棄事件0的消息」。

相關問題