代码之家  ›  专栏  ›  技术社区  ›  fyasar

iPhone代理内存泄漏问题

  •  0
  • fyasar  · 技术社区  · 15 年前

    我需要你的帮助,我正忙于这个项目。

    当我将我的应用程序运行到仪器中时,“标记线”给出了备忘录。当第一次运行一切正常,但第二次标记线出现内存泄漏时,我不明白为什么? 我尝试了很多东西,我也用了NSAutoReleasePool,但结果是一样的。 有人能帮我吗? sbjson*json=[[sbjson alloc]init]; 误差=零; nsdictionary*results=[json objectwitstring:response error:&error]; [JSON发布]; [响应发布]; nsarray*responsedNetworks=[结果对象分叉:@“Networks”]; nsmutableArray*serverResponse=[[nsmutableArray alloc]initWithArray:responsedNetworks]; 编辑: 我将示例应用程序上载到此地址:【已删除】【1】现在,我确信问题源不是委派的,但我不知道问题出在哪里,我确信仪器显示内存泄漏的位置错误。我试了很多东西。有人能告诉我我的错误吗?

    谢谢你

    编辑2: 伙计们,不幸的是,我尝试了静态分析仪,正如我预期的那样,它在某些代码行中给出了一些警告,我修复了这些警告。

    现在,给出泄漏错误的仪器,但是Clang说项目中没有错误。

    最后,我的问题没有解决。

    请下载最新的示例应用程序,您可以用眼睛看到这里是 EXAMPLE Project source .

    如何查看这些泄漏: 打开项目并在模拟器上开始调试(版本无关紧要)。启动调试,您将在打开的第一个窗口的角顶部看到信息按钮。按下并打开它,在关闭信息窗口之后再次打开它,此时您应该看到仪器的泄漏信息。但克拉格什么都不给我是说一切都很好。

    我真的很困惑?我该怎么办?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Rob Napier    15 年前

    仪表不指示导致泄漏的管路。它表示分配内存的行后来泄漏了。仅从给出的代码(显然不是整个代码)来看,我怀疑您泄漏的是ServerResponse,它包括在您标记的行中分配的内存。不要只看仪器给你的线。哪个班漏了?这将提供和行一样多的提示。

    既然您开始在内存管理方面遇到困难,那么建议您:当释放某个内容时,始终将其设置为零。这会让你省去很多头痛,并在以后崩溃。在这种情况下,我说的是 json response :

    [json release];
    json = nil;
    

    如果您有雪豹和xcode 3.2,运行分析器(cmd-shift-a)。它会自动找到最常见的内存问题。

        2
  •  0
  •   iPhone Guy    15 年前

    有一种工具比仪器更容易使用。该工具是Clang静态分析仪。 The website describes 如何安装和使用工具包。它使用方便,效率高。我一直在用它。

    命令包括:

    xcodebuild clean
    scan-build -k -V xcodebuild
    

    当结果出现在Web浏览器中时,使用起来非常简单!它将捕获仪器无法捕获的泄漏。这是苹果在雪豹中集成的工具…你也可以用豹牌的。退房 the website for directions ..。

    希望这有帮助!