4

最初のアプリが完成に近づいていますが、アプリがメモリリークを引き起こしていることが突然わかりました。いくつかのリークを見つけて修正しました。現在、リークはありませんが、驚いたことに、NSZombieを有効にすると、主にフレームワークからの4000を超えるリークが表示されます。

NSZombieの正確な使用法と混同しています。ゾンビを見つけるためだけに使用されますか、それともリークを見つけるために何らかの形で役立ちますか?

これは、フレームワークに関連するすべてのリークを示すスクリーンショットです。

リークのスクリーンショット

4

2 に答える 2

5

コマンドラインオプション「NSDeallocateZombies」のデフォルトはNOだと思います。したがって、ゾンビの割り当てが解除されることはなく、ゾンビ(NSZombiesEnabled)がオンの場合はリークとして表示されます。ゾンビがオンの状態でリークをテストしないでください。NSDeallocateZombiesをYESに設定することもできますが、それがInstrumentsとどのように相互作用するかはわかりません。ゾンビは、例外を除いてすべてのメッセージに応答する特別なオブジェクトです。これを便利にするためには、長い間存続する必要があります(つまり、割り当て解除されたオブジェクトを再利用しようとしたときにキャッチできます)が、それはリークのように見えます。

于 2012-05-29T17:17:00.113 に答える
1

NSZombieが有効になっている場合は、「リリース」を行わないでください。NSZombieは、すでにリリースされているオブジェクトを使用する場合のテストに使用されます

于 2012-05-29T14:45:44.900 に答える