Ma classe a un NSArray qui est rempli avec des objets. Dans ma méthode dealloc, puis-je tout simplement appeler release sur mon NSArray, ou dois-je effectuer une itération de la matrice et la libération de tous les objets en premier?
Réponses
Trop de publicités?NSArray conserve des objets lorsqu'ils sont ajoutés, et les rejets lorsqu'ils sont supprimés ou le tableau est libéré. Gardez cela à l'esprit, c'est cette notion de "propriété" qui conservent/libération de la gestion de la mémoire est construite. C'est la même chose avec l'objet qui possède le tableau, si elle a également conservé les objets dans le tableau, vous aurez besoin de leur envoyer un autre message de libération dans votre dealloc mise en œuvre. Si non, et si pas d'autres objets retenus, ils vont être libéré une fois que le tableau libère.
Vous devriez être en mesure de libérer juste le NSArray, et elle libère tous ses objets, indépendamment de savoir si vous êtes en possession d'autres références à eux. Si vous avez une instance de l'objet qui existe également dans le NSArray, vous aurez à libérer cet objet explicitement - il suffit de relâcher le NSArray peut pas dealloc l'objet en dehors de la matrice de contexte.