【问题标题】:Understanding the results of analyzing my application了解分析我的应用程序的结果
【发布时间】:2010-07-24 07:08:58
【问题描述】:

我有一些内存问题,在另一篇文章中我试图分析我的项目以了解我的错误......这里有一些我不明白我的错误在哪里......

谢谢

1:sqlite 连接: sqlite connection http://grab.by/grabs/2125d36a8ec1fb0af1c813af33af5653.png

2:json转换器: json converter http://grab.by/grabs/7b22080098c8931d7ef505a1eb7c087e.png

3:网址连接: url connection http://grab.by/grabs/848a0942f69c91303347d08c64fb2fbb.png

4:uitableview的单元格: cell of uitableview http://grab.by/grabs/3917e88829bb6c956bb30445fc7bec20.png

【问题讨论】:

    标签: iphone memory-leaks analyzer garbage


    【解决方案1】:
    1. 如上所述,您分配给dbrc 而不使用它。如果您不打算使用错误代码,则可以省略作业。

      sqlite3_prepare_v2(...);
      ...
      while (sqlite3_step(...) == SQLITE_ROW) {
        ...
      
    2. 如果上面的for 循环没有运行(即正则表达式匹配失败),那么matchOk 将永远不会被初始化,即它包含垃圾。

      NSString* matchOK = nil;
      int nM = 0;
      ...
      
    3. 你已经 +alloced 一个 NSURLConnection 但从未将结果存储在任何地方,因此对于分析器来说,之后没有机会 -releaseing 它。这会导致泄漏。

    4. 您有 +alloced 一个 TickerSessions 而没有 -releaseing 它。

    其实你可以打开构建结果窗口看看是什么触发了错误。

    http://developer.apple.com/iphone/library/documentation/DeveloperTools/Conceptual/XcodeProjectManagement/art/analyzer_results_by_step.jpg

    【讨论】:

      【解决方案2】:
      1. 您正在为 dbrc 分配值,但从未使用分配的值。只是摆脱那个变量。

      2. 如果正则表达式不匹配或只有一个匹配,matchOk 有一个未确定的值,因为赋值永远不会被执行。因此,dataUsingEncoding 消息的接收者是垃圾。

      3. ReadType 是在分配期间自动分配的类型,很可能是 NSNumber。你永远不会释放那个对象。

      4. 您正在显式分配刻度值,但在退出方法范围之前您没有释放它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-24
        • 2011-09-29
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        相关资源
        最近更新 更多