我用一個循環重複調用一個函數,並且循環在一個線程內運行。該線程有一個autorelease池。Objective-C內存管理奇怪的結果
我有一個函數內部下面的代碼:
NSXMLDocument* undoXML;
NSData* undoData = [NSData dataWithContentsOfFile:undoFilePath];
undoXML = [[NSXMLDocument alloc] initWithData:undoData options:NSXMLDocumentTidyXML error:&err];NSData* undoData2;
undoData2 = [undoXML XMLData];[undoData2 release];
[undoXML release];
我得到以下奇怪的結果:
- 我的程序每次泄漏內存此功能是通過循環調用。
- 當我下面的代碼添加到函數:
NSData* undoData3;
undoData3 = [undoXML XMLData];
[undoData3 release];
我的計劃泄漏,甚至更多的內存比以前。
我真的很困惑,我非常需要幫助弄清楚發生了什麼事情。也許我的autorelease池無法正常工作?這是爲什麼發生?
奇怪的是,這是發生,因爲你釋放太多,不是太少(撤消數據2是自動釋放,所以你不應該釋放它) – cobbal 2010-01-30 04:16:40