J'ai une question débutante sur le point de publier les éléments d'un Nsarray. Voir ci-après pseudo code: Ma question ici est, quand je libère 2darray, dois-je libérer explicitement chacun de son élément (tableau) en premier? Aussi, avant de libérer l'objet "Array", dois-je libérer chacun de son élément (MyObject) d'abord? P> Je suis nouveau dans l'objectif C. S'il vous plaît aider. Merci. p> p>
3 Réponses :
Non, vous n'avez pas besoin de dire à chaque objet d'être Donc, dans votre cas, vous envoyez libérer code> d. Lorsque vous envoyez une méthode code> version code> à un
nsarray code>, il envoie automatiquement une méthode code> version code> à chaque élément à l'intérieur d'abord. P>
[version 2Darray] code>. Cela envoie automatiquement
[version de tableau] code> à tous les autres tableau, qui envoie
[version obj] code> sur chaque objet à l'intérieur de chaque
tableau code>. P>.
Vous n'avez pas besoin de libérer les objets conservés. Nsarray les conserve lorsque vous ajoutez et libérons-les lors de la publication. Donc, si vous allouez, ajoutez à la matrice, puis relâchez-le, l'objet de la matrice aura le nombre de retenue de 1. Une fois que la matrice est libérée, l'objet est libéré, donc libéré. P>
Lorsqu'un objet est créé, il dispose d'un nombre de retenue de 1. Chaque fois qu'un objet est ajouté à une matrice, son nombre de retenue est augmenté (dans ce cas à 2). Après avoir ajouté à la matrice, votre code publie sa prise de l'objet, laissant tomber son compte de retenue de 1 (à 1 dans ce cas). Ensuite, lorsque vous relâchez la matrice, il appelle la libération sur tout ce qu'elle dépose leur retenue compte de 1 (à 0 dans ce cas). Lors de la conservation des coups de comptage 0 L'objet est distribué. P>
Votre code semble correct d'un point de support de gestion de la mémoire. P>