0

iOSアプリをiPodtouchで実行していますが、メモリに関する警告がたくさん表示されるようです。理由はわかりませんが、私はInstrumentsを使用しましたが、それほど多くのメモリを使用していません。とにかく、メモリ警告を受け取った後、ツールバーのUIBarButtonItemの一部が消えることがあります(たとえば、ナビゲーションコントローラの戻るボタン)。

これは本当の問題です。唯一の修正は、アプリを強制終了して再起動することです。どうすればそのような状況に対処できますか?たぶん、バーボタンアイテムをリロードする方法はありますか?誰かが匹敵する何かに遭遇したことがありますか、あなたはどのように進みますか?

ご協力いただきありがとうございます。

編集:UIBarButtonItemsにカスタム画像があることを追加する必要があります。これらの画像をviewDidLoadに設定しました。おそらく、メモリ不足の警告がそれらのイメージを解放し、その後、それらは二度とロードされません。それかもしれないと思いますが、ビューが再び表示された場合に画像が再度読み込まれるようにするにはどうすればよいですか?

EDIT2:問題は、viewDidUnloadでBarButtonItemsの1つをnilに設定したことのようです。IBOutletを設定すると、実際にはXCodeによって自動的に挿入されたと思います。それは正しいことですか、それともnilに設定しないでください。もしそうなら、どうすれば後で適切に再割り当てできますか?

4

2 に答える 2

1

イメージをローカルに設定し、それらへの強い参照がない場合、それらはスコープ外になるとすぐにOSによって「使い捨て」と見なされます。メモリ警告を受信すると、割り当てが解除されます。画像へのより大きな範囲の参照を維持してみてください。

于 2012-08-13T02:43:50.773 に答える
0

症状(UIBarButtonsが消える)を処理する代わりに、プログラムがメモリリークしている場所を見つけてください。メモリリークを見つけるためのヒントを次に示します。

  1. コードを調べて、mallocする場所のすべてのインスタンスを見つけ、割り当てを解除していることを確認します
  2. プロファイラーを使用してメモリリークを見つけます。ほとんどの場合、プロファイラーは適切に割り当て解除されていないオブジェクトに名前を付けます。
  3. リークの発見については、このプレゼンテーションをご覧ください。

最後に、メモリリークや警告が表示されていないことを確認した後、ボタンが消えたままの場合は、新しい質問にコードを投稿してください。

于 2012-08-13T02:42:41.840 に答える