1

私はiPhoneアプリを持っていますが、メモリリークの問題があるようです。これはパズル ゲームです。数回のパズルの後、デバイスでアプリがクラッシュします。

私は今、何が起こっているのかを検出するために xcode Instruments を使用しようとしています。初めて楽器を使います。

ビューがロードされたときに、「リーク」プロットに リークバーがあることに気づきました。 xCode Instruments によって検出されたこれらのメモリリークオブジェクトは何ですか? . ただし、これらのリークされたオブジェクトは小さいため、私のアプリには別の問題があると思います。

アプリを実行し続けると (通常は iPad 2 で 10 回以上)、クラッシュします。Instrumentsについてはまだあまり詳しくないので、「All Heap Allocations」を見ています。最初のラウンドのパズルの開始時に、列「# 全体」は ~70k で、パズルのラウンド間でゆっくりと成長します。新しいラウンド パズルが入ってくると、最大 90k になり、ラウンドごとに最大 200k に達してクラッシュします。

クラッシュする前に、ログ コンソールにメモリの警告と「接続が中断されました」が表示されます。

メモリリークを検索した後、NSArray / NSDictionaryまたは可変のものを可能な限りnilに設定するなど、いくつかのことを追跡しました(ただし、パズルの間を行き来するものがあるため、すべてではありません)。また、UIImage imageNamed を [UIIMage alloc] initWithContentOfFile に変更しました。

メモリの問題の原因を確認するには、他に何を調べて確認する必要がありますか? ティア!

編集:容疑者と思われるコードをいくつか投稿できればいいのですが、投稿する部分が本当にわかりません。問題の原因を知るために、コースの開発中にInstrumentsを介して確認する必要がありました。

その他のView Controllerについて。他にも (メニュー、設定、アプリストアレートなど) ありますが、それらはすべてコードで生成しました。アプリにストーリーボードまたは nib ファイルがありません。クラッシュをテストするときは、[次のパズル] ボタンをクリックするだけなので、他のすべてのビューはまったく表示されません。そのため、クラッシュする前に表示される唯一のビューは、いくつかのボタン、いくつかのサブビュー、アニメーション画像を備えたメイン ビューです (ただし、紹介として最初のパズルのみ)。それが役立つ場合は、ここに私のアプリがあります: http://itunes.apple.com/us/app/wordsect/id599455449?ls=1&mt=8

4

1 に答える 1

0

Instruments を使用してアプリケーションをデバッグしようとしている場合 - ゾンビ検出モードを有効にします。

  1. Xcode: 製品 -> スキーム -> スキームの編集
  2. デバッグスキームを選択
  3. スキームの説明で [Arguments] タブ バーを選択します。
  4. 環境変数で、NSZombieEnabled 変数を追加して確認します

その後、Instruments の制御下でアプリケーションを起動すると、アプリケーションがクラッシュしたときにインスタンスの名前が表示されます。

于 2013-11-04T06:19:08.340 に答える