Salut J'ai beaucoup de problèmes pour supprimer les objets de ma matrice mutable.Objets de mise à jour NSMutableArray insérés. -> provoque une fuite de mémoire
J'ai une méthode qui renvoie un mutable initialisé avec un objet personnalisé. Ce mutable est déclaré comme autorelease pour libérer après la méthode. A mon retour, je retiens le mutable pour ne pas le perdre. Je veux dans cette deuxième méthode pour enlever le contenu de mon mutable et libérer mon mutable. Mais mon application quitte et échoue.
//first method which return my mutable
NSMutableArray *highScores = [[[NSMutableArray alloc] init]autorelease] ;
for (....)
{
HighScore *currentHighScore = [[HighScore alloc] init];
currentHighScore.user = name;
currentHighScore.score = score;
//add to the array
[highScores addObject:currentHighScore];
[currentHighScore release];
}
return highScores;
// method which use the first method
//retrieve with retain to keep.
highScoreList = [[HighScoreViewController getHighScores:NormalGameModeXML]retain] ;
HighScore *currentHighScore;
int count = [highScoreList count];
for (int i = 0; i < count ; i++)
{
currentHighScore = [highScoreList objectAtIndex:i];
}
Ceci fonctionne, mais bien sûr j'ai une fuite de mémoire pour tous les objets dans le mutable non libéré. Mais si je suis en train de libérer l'objet de la mutable et le mutable lui-même par ceci:
//remove Mutable array content.
//[highScoreList removeAllObjects] ;
//[highScoreList release];
Mon application Cesser.
Avez-vous une solution pour éviter la fuite de mémoire et la nettoyer correctement?
Si vous exécutez le débogage lorsque votre application se bloque, que dit-elle sur la console? ce qui est sur la trace de la pile? – filipe
Où voyez-vous cette fuite de mémoire? Que le programme se bloque dans le cas 2dn est évident. Vous libérez un objet autorelease. – nils
Filip: quand je cours en débogage pour le scénario 2 (libérer et supprimer des objets): EXC_BAD_ACCESS – Tommy