【问题标题】:regarding Static memory leak关于静态内存泄漏
【发布时间】:2012-03-16 05:57:51
【问题描述】:

我在其他一些类中有一个名为 LineInfo 的类,我正在分配它,并使用该类的对象将内存分配给某个数组,然后如何释放该数组,例如在 B 类中:

A *a=[[A alloc]init];  
a.lineArray=[[NSMutableArray alloc]initWithArray:_xElements];   
[a release];  

现在我发布了一个 ([a release]),但在静态分析器中仍然会泄漏 linearray。如何释放它?

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    如果lineArray 是您的“A”类的保留属性,那么为其分配一个已分配的对象应该会引发内存泄漏。如果是,则改为以下行;

    a.lineArray=[[NSMutableArray alloc]initWithArray:_xElements];
    

    尝试以下方法,

    NSMutableArray *tempArray = [[NSMutableArray alloc]initWithArray:_xElements];
    a.lineArray = tempArray;
    [tempArray release];
    

    【讨论】:

      【解决方案2】:

      lineArray 可能是 A 类的保留属性,所以当你分配它时,你应该做一个自动释放:

      a.lineArray=[[[NSMutableArray alloc]initWithArray:_xElements] autorelease];
      

      或更好:

      a.lineArray = [NSMutableArray arrayWithArray: _xElements];
      

      那么你需要在A的dealloc方法中释放lineArray。

      - (void)dealloc
      {
        [lineArray release];
      
        [super dealloc];
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-08
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 2013-11-06
        • 2011-02-26
        相关资源
        最近更新 更多