Tengo el siguiente métodocuándo liberar un iPhone NSString en
-(NSMutableArray *) getPaises {
NSMutableArray * paises;
paises = [[NSMutableArray alloc] init];
while(get new row) {
NSString *aPais = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
[paises addObject:aPais];
}
return paises;
}
No estoy liberando el APAIS, porque si lo hago la aplicación se bloquea. No sé cuándo o si debo liberarlo en algún lugar después de usarlo y, de ser así, cómo lo hago. ¿Simplemente liberar el NSMutableArray es suficiente? ¿O debo atravesarlo y liberar cada objeto?
Y si no tengo que liberarlo, ¿quién es el responsable de la liberación?
Una nota con respecto a la denominación del método: En Cocoa, un método llamado "getFoo" devuelve foo por referencia: - (void) getFoo: (out NSMutableArray **) outArray. Para ser coherente con las convenciones de nombres de Cocoa, debe nombrar su método simplemente "paises". –