2011-10-22 5 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支払った後)、このことについて言っている:

これらのメッセージは、コアロケーションフレームワークから来ています。これらのメッセージの最も一般的な原因は、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

マイケルが正しいのは、ロケーションマネージャがループを実行しているスレッド(デフォルトではメインスレッド)上でのみ実行できることです。それ以外の場合は、コールバックは処理されません。バックグラウンドスレッドでZoosh SDKを初期化しようとしたら、次の警告を参照してください。

注意事項メインスレッド以外のスレッドで実行されているディスパッチキューにロケーションマネージャ(0x11b5c9d0)が作成されました。ロケーションマネージャオブジェクトが割り当てられているスレッドで実行ループが実行されていることを確認するのは開発者の責任です。特に、任意のディスパッチキュー(メインキューにはアタッチされていない)にロケーションマネージャを作成することはサポートされておらず、コールバックは受信されません。

明らかです。そして、初期化をメインスレッドに置くと、この警告はクリアされ、「処理されていないメッセージが多すぎるため、イベント0のメッセージを破棄しません」というメッセージは表示されません。

関連する問題