Как освободить объекты в NSMutableArray? - PullRequest
0 голосов
/ 16 декабря 2010

у меня есть этот изменяемый массив:

NSMutableArray *points = [pgroute getPoints:self];

, где [getPoint...] сделать это:

{
 NSMutableArray *normPoints = [[NSMutableArray alloc] init];
 [normPoints addObject:@""];
 [...]
 return normPoints;
}

сейчас,points - это массив объектов, верно?правильно освободить массив * points таким образом?

for (int i = 0; i < [points count]; i++) {
    [(NSString *)[points objectAtIndex:i] release];
}
[points release];

или это другой правильный путь?Компилятор Xcode, с RUN_CLANG_STATIC_ANALYZER скажите мне, что

Неправильно уменьшен счетчик ссылок на объект, который в данный момент не принадлежит вызывающей стороне

Какмогу я решить это?

спасибо,альберто.

1 Ответ

2 голосов
/ 16 декабря 2010

Если вы хотите очистить массив, просто сделайте это:

[points removeAllObjects];

Если вы хотите освободить массив, вы можете даже пропустить его и сразу же освободить:

[points release];

Массив будет обрабатывать освобождение объектов самостоятельно. Опять же, если вы добавляете только NSString литералы (@"using this notation") в массив, их не нужно освобождать, поскольку они являются константами. Это другая история, конечно; моя точка зрения такова, что NSMutableArray будет заниматься выпуском материала там, где это необходимо для вас.

...