NSMutableArray et removeObjectAtIndex
Bonjour tout le monde.
Une question idiote que je me pose...
Que ce passe t-il avec le code suivant lors de la suppression de l'objet de la liste ? A t-on un mécanisme de release ou d'autorelease de l'objet contenu à l'index 0 de "uneListe" ou simplement la suppression d'un pointeur pointant vers cet espace mémoire ? Le contenu de la liste à l'index 0 existe t'il encore malgré le fait qu'on n'ai plus accès à lui ou à t'il réellement été effacé ?
C'est idiot comme question mais ça m'embêterait de laisser de la mémoire occupé alors qu'elle est inutilisable...
Une question idiote que je me pose...
<br />Objet * unObjet = [[Objet alloc] init]; /* Création de mon objet */<br /><br />NSMutableArray * uneListe = [[NSMutableArray alloc] init]; /* Création d'une Liste */<br />[uneList addObject:unObject]; /* Ajout de l'objet dans la liste */<br /><br />[unObjet release]; /* Suppression de mon objet */<br /><br />[uneListe removeObjectAtIndex:0]; /* Suppression de l'objet à l'index 0 de la liste */<br />
Que ce passe t-il avec le code suivant lors de la suppression de l'objet de la liste ? A t-on un mécanisme de release ou d'autorelease de l'objet contenu à l'index 0 de "uneListe" ou simplement la suppression d'un pointeur pointant vers cet espace mémoire ? Le contenu de la liste à l'index 0 existe t'il encore malgré le fait qu'on n'ai plus accès à lui ou à t'il réellement été effacé ?
C'est idiot comme question mais ça m'embêterait de laisser de la mémoire occupé alors qu'elle est inutilisable...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Toujours la même règle : tu ne fais les release ou autorelease que des objets dont tu as toi-même fait le alloc/init. Par exemple là tu as fait un alloc/init sur unObject, à toi de faire un release. Et comme il a été entre temps ajouté au tableau il existera toujours car retenu dans le tableau... jusqu'à ce que tu le remove du tableau évidemment.