2012-09-11 88 views
1

我一直困惑這個內存問題幾天。在我的iOS項目中,我使用KissXML作爲XML解析器。我的XML文件很大(15M)。現在,內存問題就來了:iOS XML解析器內存泄漏與KissXML

這裏是我的代碼

HTTP連接完成部分:

NSData *copyData = [NSData dataWithData:self.httpData]; //self.httpData-recieved from http connection. 
dispatch_async(globalQueue,^{ //globalQueue-GCD global queue. 
    [AIDXMLParser universalParser:copyData]; //Class method for XML Parser. 
}); 

在API:AIDXMLParser.m

DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:xmlData options:0 error:nil]; 
[doc release]; 

的universalParser當我運行我的應用程序。我使用[Activity Monitor]來捕捉我的內存使用情況。

之前:[實際內存大小]爲40.7M

後:[實際內存大小爲63.1M

增加的內存(63.1M,40.7M)保持永遠存在。

一切正常。我曾嘗試使用TBXML而不是KissXML。使用儀器 - 配置文件/分析進行測試,但仍然沒有錯誤或沒有警告。 我不知道我在哪裏錯了。

其他人是否面臨同樣的問題?

+0

Try self.httpData = nil; – FKDev

回答

1

這可能是因爲你的NSData的大小,嘗試拆分你的XML並且多次執行解析。

我討厭與10MB +的JSON相同的問題。

+0

它是唯一的方法嗎? ( - - !) 我的NSData的大小不超過5MB +,但是在將NSData生成到XMLDocument後它變得很大。 –

+0

好的,最後我找到了一條出路 - 更改每個XML文件的格式,使其足夠小,並且會更好。 –