2012-03-16 101 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]; 
}