2012-09-11 44 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文件的格式,使其足够小,并且会更好。 –