Considérons la méthode suivante, où je compile une chaîne et la renvoie. Je voudrais libérer les blocs de construction de la chaîne, mais la chaîne est basée sur des valeurs qui n'existent plus. Maintenant quoi? Est-ce que j'ai une fuite de mémoire et si oui, comment puis-je le corriger?Suis-je une fuite de mémoire ici?
- (NSString) getMiddahInEnglish:(int)day{
NSArray *middah = [[NSArray alloc] initWithObjects:@"Chesed", @"Gevurah", @"Tiferes", @"Netzach", @"Hod", @"Yesod", @"Malchus"];
NSString *firstPartOfMiddah = [NSString stringWithFormat: @"%@", [middah objectAtIndex: ((int)day% 7)-1]];
NSString *secondPartOfMiddah = [NSString stringWithFormat: @"%@", [middah objectAtIndex: ((int)day/7)]];
NSString *middahStr = [NSString [email protected]"%@ She'[email protected]%", firstPartOfMiddah, secondPartOfMiddah];
[middah release];
[firstPartOfMiddah release];
[secondPartOfMiddah release];
return middahStr;
}
A la fin de la méthode, la chaîne de retour, middahStr
n'a pas été publié. Est-ce un problème? Suis-je une fuite de mémoire?
Non lié à la gestion de la mémoire, mais la liste des arguments pour 'initWithObjects:' doit être terminée avec 'nil'. Sinon, vous attendez juste un crash. – Chuck
@Chuck, à droite. J'ai oublié cela. Je suis évidemment nouveau à ce jeu ... EDIT: Qu'en est-il un «nil» manquant provoque un accident? – Moshe
Sans le néant, NSArray ne sait pas où se termine la liste des arguments et continuera à parcourir la pile jusqu'à ce qu'il atteigne un 0. – Chuck