Le release est-il récursif ?

skimpyskimpy Membre
07:39 modifié dans API AppKit #1
Bonjour,

Afin d'éviter les problèmes de mémoire, j'ai une question par rapport au release :
Voilà , j'ai un NSMutableArray (appelons-le master) qui contient des objets Toto. Toto a les variables d'instances suivantes :
NSMutableDictionary * dico;
NSMutableArray * child;

child est un tableau qui pointe également sur des objets Toto. Lorsque je fais un [[master objectAtIndex:0] release], cela va me supprimer l'objet en position 0 du tableau master mais est-ce que tous les éléments de "child" vont recevoir aussi le message release ? (sachant que mon dealloc contient un [child release] ... je pencherai pour oui mais c'est pour avoir confirmation)

Merci.

Réponses

  • BruBru Membre
    07:39 modifié #2
    Tous les objets conteneurs cocoa font un retain sur l'objet qu'ils stockent, et font un release sur l'objet qu'ils libèrent.

    De la même manière, un release sur un NSArray qui entraà®ne sa destruction, provoque un release sur tous les objets qu'il contient (puisque lors de la destruction du NSArray, les objets contenus sont de facto libérés).

    dans 1140861631:

    ... mais est-ce que tous les éléments de "child" vont recevoir aussi le message release ?


    La réponse est donc oui.

    .
  • skimpyskimpy Membre
    07:39 modifié #3
    Merci Bru, ça confirme donc ce que je pensais.
Connectez-vous ou Inscrivez-vous pour répondre.