2012-03-16 3 views
0

У меня есть класс с именем LineInfo в каком-то другом классе. Я его выделяю и используя объект этого класса. Я выделяю память для некоторого массива, а затем как разблокировать этот массив, например, в классе B:относительно утечки статической памяти

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

сейчас я выпускаю ([a release]), но в статическом анализаторе все еще его дает утечку с linearray. Как я могу его отпустить?

ответ

1

Если lineArray является сохраненным свойством вашего класса «А», то присвоение ему выделенного объекта должно привести к утечке памяти. Если да, то, если следующая строка;

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

попробовать следующее,

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

lineArray, вероятно, сохраняется свойство на классе А, поэтому, когда вы назначаете его вы должны сделать autorelease:

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

или лучше:

a.lineArray = [NSMutableArray arrayWithArray: _xElements]; 

Затем вам необходимо освободить lineArray в методе dealloc A.

- (void)dealloc 
{ 
    [lineArray release]; 

    [super dealloc]; 
} 
Смежные вопросы