当我使用与SeismicXML示例相同的NSXMLParser时出现内存泄漏问题

时间:2009-02-17 05:35:55

标签: iphone

我已经完成了与SeismicXML示例相同的xml解析。但现在它给了我内存泄漏问题。

当我用仪器测试SeismicXML时,它也会产生相同的内存泄漏。

在SeismicXML中,EarthQuake示例就在那里,它包含来自xml解析的所有字符串和数组。 SO'泄漏'仪器将所有这些字符串和数组显示为泄漏对象。

我花了很多时间来讨论这个问题。但我还没解决。如果有人解决了这个问题,请与我分享您的评论。

谢谢, Haresh。

3 个答案:

答案 0 :(得分:0)

您可能需要下载,安装和使用CLANG检查工具来了解代码泄漏内存的原因。这个工具(已经为Leopard 10.5.x构建)有时可能无法提供正确的答案,但根据我的个人经验,它从未失败过。我强烈推荐它作为您的日常开发工具之一。

您可以从

下载

http://clang.llvm.org/StaticAnalysis.html

用法非常简单。看看

http://clang.llvm.org/StaticAnalysisUsage.html#BasicUsage

实际上,您只需使用命令

构建Xcode项目

scan-build -k -V xcodebuild

然后,使用在终端窗口中显示为输出的命令检查生成的输出HTML文件。这些文件将为您详细解释代码中出现问题的原因(而不仅仅是内存泄漏)。

亲切的问候

答案 1 :(得分:0)

好的,

我假设您正确安装了该工具,以便您可以从终端调用它。

使用它:

1)cd / your / project / path 2)scan-build -k -V xcodebuild

如果这不起作用,那么您没有正确安装该工具:至少您没有正确设置“路径”。

以下是如何设置c或tcsh shell的路径,假设您在/opt/checker-0.160中安装了该工具

设置mypath =(/ opt / checker-0.160) set path =($ mypath $ path)

3)如果命令正常工作,它会构建您的项目并在您的计算机上启动Web服务器。然后,它会为您提供可在计算机上连接的URL以读取结果。

如果命令无法启动Web服务器,它会告诉您html文件在特定目录中可用,并且您将获得路径。通常这个目录可以在/ tmp。

下找到

只需转到此目录

cd / path / to / results / directory

然后

打开index.html

您将看到完整的报告。 最诚挚的问候。

答案 2 :(得分:0)

在初始化我的NSXMLParser之前,我设置了以下内容:

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:URL];

这会停止泄漏。