-1

ARC を使用しない古いアプリがあります。かなり単純な変更に対処しようとしたときに、厄介な問題に行き詰まりました。

これを実行するとき:

NSMutableArray *arr=[[NSMutableArray alloc] initWithCapacity:0];
NSLog(@"arr=%08lx", (unsigned long)arr);
[arr release];

コンソールでこれを取得します:

arr=06a2ca50
*** -[__NSArrayM class]: message sent to deallocated instance 0x6a2ca50

エラーは、リリース ステートメントをシングル ステップ オーバーした直後に発生します。

4.4.1にアップグレードする前にこれを見たことを思い出せないので、上記を説明するxcode 4.4.1の新しいものはありますか?

それとも、上記のコードで非常に明白なことを監視しているだけですか?

更新: 4.3.3 にダウングレードした後、問題は解消されました。現在、これを引き起こしている可能性のあるものを探しています。新しい/クリーンなプロジェクトで再現できませんでした。xcode 45-DP4 / iOS6 と同じ問題..

4

1 に答える 1

0

プロジェクト ファイルには、デバッグ スキームの環境変数に NSZombieEnabled=YES が含まれていました。

4.4.1 以降で NSZombieEnabled=YES を指定してこの警告が表示される理由はわかりません。標準の分析および診断ツールではメモリの問題が報告されないためです。

この警告が 4.1.1 以降で発生する理由について詳しい人がいれば、ぜひ知りたいです。一般に、私はコンパイラまたはデバッグの警告を真剣に受け止めることに熱心であり、それらを無効にすることが最善の選択肢であるとは考えていません..

于 2012-08-22T12:28:16.780 に答える