относительно утечки статической памяти - PullRequest
0 голосов
/ 16 марта 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 16 марта 2012

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

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

или лучше:

a.lineArray = [NSMutableArray arrayWithArray: _xElements];

Затем вам нужно освободить lineArray в методе dealloc для A.

- (void)dealloc
{
  [lineArray release];

  [super dealloc];
}
1 голос
/ 16 марта 2012

Если lineArray является сохраненным свойством вашего класса 'A', то присвоение ему выделенного объекта должно вызвать утечку памяти. Если так, то вместо следующей строки:

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

попробуйте следующее,

NSMutableArray *tempArray = [[NSMutableArray alloc]initWithArray:_xElements];
a.lineArray = tempArray;
[tempArray release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...