5

オンラインで調査を行ったところgpus_ReturnNotPermittedKillClient、アプリがバックグラウンドで動作しているときに OpenGL アクションがトリガーされると、 がスローされることに気付きました。現在、マップ ビューとオーバーレイを含むプロジェクトに取り組んでいます (Apple のBreadcrumb サンプル コードを使用)。これらのアクションはメイン スレッドで実行されますが、マップ ビューが初期化されるか、ビューが画面にプッシュされると、アプリがバックグラウンドになる可能性があります。

また、位置情報サービスを使用して GPS を介してポイントを取得しますが、フォアグラウンドにいる場合を除き、オーバーレイを更新しません。

iOS 6 以降、MKMapView が OpenGL で作成されるようになったのは私の理解ですか? この場合、オーバーレイの描画も OpenGL を介して行うことができますか? これは、このエラーがランダムに発生する理由を説明するのに役立ちます。

invokeやusingなど、すべての OpenGL アクションをキャンセルする方法について聞いたことがありglFinish()ます。これを考慮すると、MKMapView/MKOverlayView を使用して OpenGL の描画を排除する最善の解決策は何でしょうか?applicationDidEnterBackgroundapplicationWillResignActive[[CCDirector sharedDirector] pause]

4

1 に答える 1

13

複数の解決策を試した後、このクラッシュの原因は、マップが割り当てられてから数秒後に起動されたマップ ビューのフレームの調整であることに気付きました。ステータス バーがドロップ ダウンし、マップのフレームが数ピクセル下にアニメーション化されました。このため、(おそらく) マップを再描画する必要があり、このアニメーションがバックグラウンドで発生しているとクラッシュが発生しました。

アプリのアクティブ ステータスに関連してステータス バーの状態を追跡し、アプリケーションの状態が の場合にのみアニメーション化しますUIApplicationStateActive。これを実行してから、クラッシュすることはありません。

于 2013-04-04T15:04:35.033 に答える