Come posso risolvere questo problema di memoria?
-
08-10-2019 - |
Domanda
questo è il mio frammento:
- (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]]];
}
La compilazione di questo codice opzione RUN_CLANG_STATIC_ANALYZER
con ( Property-> Costruire Opzioni-> Esegui Static Analyzer ), mi mostrano una perdita su [[NSString alloc] ...
.
RUN_CLANG_STATIC_ANALYZER
Attivando questa impostazione causerà Xcode per eseguire lo strumento di analisi statica Clang sulla qualificazione file di origine. Questo strumento supporta attualmente i file C e Objective-C. [RUN_CLANG_STATIC_ANALYZER]
Come posso risolverlo?
grazie in anticipo,
allberto
Soluzione
destro. Si sta assegnando un oggetto che si possiede (perché hai invocato +alloc
), ma poi non si è mai rilasciarlo.
È possibile sostituire tutte le istanze di [[NSString alloc] initWithFormat:...]
con [NSString stringWithFormat:...]
per riparare la perdita.