iOS XML Parser 内存泄漏与 KissXML
Posted
技术标签:
【中文标题】iOS XML Parser 内存泄漏与 KissXML【英文标题】:iOS XML Parser memory leaks with KissXML 【发布时间】:2012-09-11 08:21:28 【问题描述】:这几天我一直被这个内存问题弄糊涂了。在我的 ios 项目中,我使用 KissXML 作为 XML 解析器。我的 XML 文件很大(15M)。现在,内存问题来了:
这是我的代码
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:universalParser 的 AIDXMLParser.m
DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:xmlData options:0 error:nil];
[doc release];
当我运行我的应用程序时。我使用 [Activity Monitor] 来捕获我的内存使用情况。
之前:[实际内存大小]为40.7M
之后:[实际内存大小为63.1M
增加的内存 (63.1M-40.7M) 永远保留在那里。
一切正常。我尝试过使用 TBXML 而不是 KissXML。使用 Instruments-Profile/Analyze 进行测试,但仍然没有错误或警告。 我不知道我错在哪里。
还有其他人面临同样的问题吗?
【问题讨论】:
试试 self.httpData = nil; 【参考方案1】:这可能是因为您的 NSData 的大小,请尝试拆分您的 XML 并进行多次解析。
我对 10MB 以上的 JSON 也有同样的问题。
【讨论】:
这是唯一的方法吗? (- -!) 我的 NSData 的大小不超过 5MB+,但是在将 NSData 生成到 XMLDocument 后会变得很大。 好吧,终于找到出路了——改变每个XML文件的格式,让它足够小,这样会更好。以上是关于iOS XML Parser 内存泄漏与 KissXML的主要内容,如果未能解决你的问题,请参考以下文章