2012-03-16 70 views
0

我在其他一些类中命名为LineInfo我分配它并使用该类的对象我将内存分配给某个数组,然后如何在类B中释放该数组:关于静态内存泄漏

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

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

回答

1

如果lineArray是'A'类的保留属性,那么为其分配一个分配的对象应该会引发内存泄漏。如果是这样,而是如果下面一行;

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

尝试以下方法,

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

lineArray大概是在类A中的保留的性质,所以当你为它分配你应该做一个自动释放:

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

或更好:

a.lineArray = [NSMutableArray arrayWithArray: _xElements]; 

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

- (void)dealloc 
{ 
    [lineArray release]; 

    [super dealloc]; 
}