Supprimer des objets de NSArray
J'ai un projet avec l'ARC.
J'ai un NSArray
de pentecôte certains objets à l'intérieur.
À certains moment j'ai besoin de changer l'objet dans le tableau.
Avec une NSMutableArray
je vais le faire :
[array removeAllObjects];
et je suis sûr que c'est la méthode la libération de tous les objets contenus dans le tableau.
Mais avec un NSArray je ne peux pas faire ça! Donc, ma question est: si j'ai mis en tableau à nil
et puis de le ré-initialiser, l'ancien objet figurant dans le tableau sont vraiment libéré de la mémoire ?
array = nil;
array = [[NSArray alloc] initWithArray:newArray];
Ou j'ai besoin d'utiliser NSMutableArray
?
source d'informationauteur Fry
Vous devez vous connecter pour publier un commentaire.
Tu peux faire ça:
Ce sera la cause de
array
d'être libéré. Lorsque cetteNSArray
obtient désalloué, tous les objets contenus seront publiés, trop.L'ancien tableau sera libéré quand il n'y a plus de solides références. Si vous aviez la seule référence forte à elle, puis lorsque vous définissez
array
à quelque chose d'autre, il sera libéré immédiatement.Lorsque l'ancien tableau est libéré, il va libérer tous les objets qu'il contient. Si il n'y a pas d'autres références fortes à ces objets, ils seront également libéré immédiatement.
Vous n'avez pas à mettre
array = nil
avant de le mettre sur le nouvel ensemble.Je dirais NSMutableArray car il n'y aurait pas de frais généraux de l'allocation et la désallocation de nouveau