0

アプリがリークしている場所を特定するのに苦労しています。ヒープショットを使用して、割り当てによって「Instruments」プロファイリング アプリケーションでテストしました。これは私が得たものです:

ここに画像の説明を入力

ご覧のとおり、割り当てが増加しています。フェード効果で、2 つのビュー間を切り替えるたびに増加します。リークを見つけるには、次のヒープショットのどれを調べる必要がありますか?

事前に助けてくれてありがとう:)。

4

2 に答える 2

4

ARC は、メモリへの参照を保持していない場合にのみ、メモリの割り当てを解除できます。リークインストゥルメントは「実際の」リークを示していないため (メモリにアクセスできなくなったという意味で)、メモリが放棄されている可能性があります。不要になったオブジェクトへの参照をまだ保持しているため、割り当てが解除されることはありません。

ベースラインの後にどのスナップショットを検査するかは問題ではありません。ただし、スナップショット内のオブジェクトのリストはやや圧倒される可能性があります...しかし、多くの場合、独自のクラスに絞り込むことが役立ちます。これを行うには、クラス プレフィックスを右上の検索フィールドに入力します。スナップショットにクラスが表示されない場合は、少なくとも直接使用するクラスを探すことができます。

また、割り当てインストゥルメントのインスペクター ペインで [参照カウントの記録] オプションを有効にしてください。これを有効にすると、スナップショットにリストされているオブジェクト (クラス名ではなく、メモリ アドレスで表されるオブジェクト) の横にある小さな右矢印をクリックして、このオブジェクトの完全な履歴を表示できます。これにより、誰が参照を保持しているかを簡単に確認できます。

お役に立てれば!

于 2013-05-12T10:20:07.283 に答える