ループを使用して関数を繰り返し呼び出していますが、ループはスレッド内で実行されます。スレッドには自動解放プールがあります。
その関数内に次のコードがあります。
NSXMLDocument * undoXML;
NSData * undoData = [NSData dataWithContentsOfFile:undoFilePath];
undoXML = [[NSXMLDocument alloc] initWithData:undoData options:NSXMLDocumentTidyXML error:&err];NSData * undoData2;
undoData2 = [undoXML XMLData];[undoData2リリース];
[undoXMLリリース];
次の奇妙な結果が得られます。
- この関数がループによって呼び出されるたびに、私のプログラムはメモリリークを起こします。
- 次のコードを関数に追加すると、次のようになります。
NSData * undoData3;
undoData3 = [undoXML XMLData];
[undoData3リリース];
私のプログラムは以前よりもさらに多くのメモリをリークします。
私は本当に混乱していて、何が起こっているのかを理解するのにひどく助けが必要です。自動リリースプールが正しく機能していない可能性がありますか?なぜこうなった?