NSMutableArray et release

Bonjour,

desole pour cette question basique mais j'ai un doute :

si j'ai :
<br />
NSMutableArray* tables2use;<br />
je peux avoir soit :<br />
tables2use = [NSMutableArray array];<br />
[tables2use addObject:maChaine];<br />
soit :<br />
tables2use = [tableNames mutableCopy];<br />
<br />




Dans le premier cas je suppose qu'il ne faut pas faire de release mais il faut virer les objet du tableau (removeAllObjects).

Et dans le deuxieme faire un release ?



Merci

Réponses

  • BaardeBaarde Membre
    Non, les objets sont automatiquement retirés du tableau lorsque celui-ci est détruit. Pas besoin de le faire toi-même.



    Dans le deuxième cas, oui, il faut libérer le tableau quand tu n'en as plus besoin (ou utiliser ARC).
  • adsads Membre
    Dans ce cas autant faire
    <br />
    tables2use = [[tableNames mutableCopy] autorelease];<br />
    


    comme cela je me soucis de rien quelque soit le cas chosit.
  • CeetixCeetix Membre
    En fait je vois aucun rapport avec tes deux cas de figures. Bref oui faut releaser toi-même quand un objet est en mutableCopy. Le mutableCopy incrémente de 1 ton retain count donc en l'appelant c'est toi qui détient l'objet.
  • StephSteph Membre
    Pourquoi ne pas le mettre à  nil et faire un release dans le viewDidUnload, si c'est un objet dont tu as besoin pour toute la durée de vie de ta vue, tu es tranquille et tu release proprement ...



    Avec l'autorelease tu peux avoir des surprise, donc si tu n'utilises pas ARC, détermine à  quel moment tu n'as plus besoin de ton objet et release le toi même.
  • adsads Membre
    en fait le tableau est utilise dans une fonction (qui n'est pas dans une vue mais dans une librairie) qui est asynchrone, l'autorelease permettrait de la liberer "toute seule"
  • DrakenDraken Membre
    ARC c'est bien.. Hum, je crois l'avoir déjà  dis quelque part, non ? image/rolleyes.gif' class='bbc_emoticon' alt='::)' />
Connectez-vous ou Inscrivez-vous pour répondre.