【问题标题】:Check for memory leak检查内存泄漏
【发布时间】:2011-05-21 12:09:14
【问题描述】:

您好,请告诉我我的代码中是否存在内存泄漏..
我正在解决我的应用程序中的内存泄漏问题,但在这里感到困惑会造成内存泄漏吗?

     NSMutableArray *dataArray=[[NSMutableArray alloc]init];

if(condition)
{
        [dataArray addObject:[appDelegate selectFromDatabase:x]];//returning an autoreleased array
}
else
{
dataArray=[appDelegate selectFromDatabase:a];
}
     //use dataArray

        [dataArray release];

【问题讨论】:

    标签: iphone memory-leaks instruments


    【解决方案1】:

    您可以使用 Instruments 来帮助您搜索内存泄漏。

    http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/

    【讨论】:

      【解决方案2】:

      此代码会泄漏内存。您重新分配 dataArray 而不释放旧值。通过生成的属性进行赋值,旧值会先被释放。

      else
      {
          dataArray=[appDelegate selectFromDatabase:a];
      }
      

      你也可以重构你的代码以避免创建数组,除非你真的需要它:

      if (condition)
      {
          // Create array here
      }
      else
      {
          // get array from other place
      }
      

      【讨论】:

      • 不错的选择。您还可以选择使用方便/自动释放的方法来初始化您的 NSMutableArray,例如 [NSMutableArray arrayWithCapacity:(NSUInteger)numItems]
      • @Rog - 公平点,但如果仅在需要时创建数组,则可能更容易理解代码。我已经更新了答案
      • @Ranjeet Sajwan - 没问题,伙计
      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 2010-10-09
      • 1970-01-01
      • 2012-07-16
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多