Как я могу решить эту утечку памяти?
-
08-10-2019 - |
Вопрос
Это мой фрагмент:
- (id) initWithFrame:(CGRect)frame andConfig:(PGParams*) params
{
for (int i=0; i<[conf.map count]; i++)
[conf.map replaceObjectAtIndex:i withObject:
[[NSString alloc] initWithFormat:@"%@&sito=%@",
[conf.map objectAtIndex:i], [params sito]]];
for (int i=0; i<[conf.orto count]; i++)
[conf.orto replaceObjectAtIndex:i withObject:
[[NSString alloc] initWithFormat:@"%@&sito=%@",
[conf.orto objectAtIndex:i], [params sito]]];
for (int i=0; i<[conf.mix count]; i++)
[conf.mix replaceObjectAtIndex:i withObject:
[[NSString alloc] initWithFormat:@"%@&sito=%@",
[conf.mix objectAtIndex:i], [params sito]]];
}
Составление этого кода с RUN_CLANG_STATIC_ANALYZER
вариант (Property-> Параметры сборки-> Запускать статический анализатор), это покажет мне утечку на [[NSString alloc] ...
.
Run_clang_static_analyzer.
Активация этого параметра приведет к выводу XCODE для запуска инструмента статического анализа Clang в квалификационных исходных файлах. Этот инструмент в настоящее время поддерживает файлы C и Objective-C. [Run_clang_static_analyzer
Как я могу решить это?
заранее спасибо,
allberto.
Решение
Верно. Вы выделяете объект, который у вас есть (потому что вы вызывали +alloc
), но тогда вы никогда не освобождаете его.
Вы можете заменить все экземпляры [[NSString alloc] initWithFormat:...]
с участием [NSString stringWithFormat:...]
исправить утечку.