2


0

警告:check_safe_call:現在のフレームを復元できませんでした

「警告:check_safe_call:現在のフレームを復元できませんでした」というエラーは通常何を示していますか? 私は他の場所でそれがメモリの問題だと読んでいます。 常にメモリの問題ですか?

デバイスでこのエラーが発生しています(シミュレーターではありません)。 「NSZombieEnabled」は何も表示しません。 ビルドしてデバッグすると、デバッガウィンドウに何も表示されません。 ピークメモリはそれほど高くありません(3MB)。 地図をスクロールした後、毎回同じエラーでクラッシュするだけです。

これをデバッグする方法はありますか。 ありがとう。

*編集:*クラッシュの理由を以下の回答に追加しました(SQLite接続の作成が多すぎます)。 他の誰かがこのエラーを受け取って解決策を見つけた場合は、以下に投稿してください。 複数の原因があるエラーメッセージのようです。

4 Answer


4


これを数回見ましたが、実際に問題を正確に特定することはできませんでした。 しかし、私はそれを見てきましたが、通常、何らかの無限ループまたは再帰が間違っており、デバッガがそれをキャッチします。 十分に長く置いたかどうかはわかりませんが、しばらくすると、デバッガーが持っているスタックフレームの読み込みを開始し、デバッガーウィンドウに表示する必要があります。 そこで、何が間違っているのかを見ることができるはずです。

私が言ったように、通常、これは無限ループまたは再帰によるものであり、デバッガーは同じ関数への5000回以上の呼び出しを表示するため、問題を見つけるのはそれほど難しくないはずです-しかし、正確な問題ではないかもしれません。

たった2セントです。


1


この警告は、スタックベースのブロックをコピーせずに定義したスコープの範囲外で使用する場合にも発生する可能性があります。


0


私もこの問題に遭遇しましたが、解像度が高すぎる画像が原因であることがわかりました。 シミュレータでは完全に機能しますが、デバイスでは機能しません。 画像のサイズを1インチあたり180ピクセルで320x480ピクセルに変更したところ、完全に機能するようになりました。

それが役立つことを願っています


0


コードにエラーが見つかりました。 私が使用していたSQLiteデータベースがクラッシュを引き起こしていたことがわかりました。 データベース接続を閉じるのを忘れていました。コードが特定の関数にヒットするたびに、新しい接続を開きました。 最終的には多すぎて、アプリがクラッシュしました。

これらのエラーの多くは、一種の過負荷に関係しているようです(Jasarienが言うように)。