关于静态内存泄漏

时间:2012-03-16 05:57:52

标签: iphone objective-c ios

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

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

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

2 个答案:

答案 0 :(得分:1)

如果lineArray是'A'类的保留属性,则为其分配一个已分配的对象应该会导致内存泄漏。如果是,请改为以下行;

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

尝试以下方法,

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

答案 1 :(得分:1)

lineArray可能是A类的保留属性,因此当您指定它时,您应该进行自动释放:

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

或更好:

a.lineArray = [NSMutableArray arrayWithArray: _xElements];

然后你需要在A的dealloc方法中释放lineArray。

- (void)dealloc
{
  [lineArray release];

  [super dealloc];
}