Will -replaceObjectAtIndex:withObject :de NSMutableArray libère-t-il l'ancien objet qui est remplacé par un nouveau ?

StackOverflow https://stackoverflow.com/questions/906183

Question

La documentation ne dit rien à ce sujet.Lorsqu'un ancien objet est « supprimé » et qu'un nouveau vient à sa place, que se passe-t-il avec l'ancien ?Dois-je le libérer moi-même ?

Était-ce utile?

La solution

Non, vous n'êtes pas obligé de le publier vous-même.

Vous pourriez obtenir une erreur si l'objet remplacé a un nombre de conservations égal à 0.

Le nouvel objet est conservé.L'ancien objet est libéré.

Autres conseils

Vous n'avez pas à la libérer.

Vous n'avez pas effectué un alloc , Copier ou conserver et ne sont donc pas responsables de la mémoire - avec ce la documentation est tout à fait clair.

Je ne s'attendre à Apple pour documenter les procédures de gestion de la mémoire pour chaque méthode dans le SDK à moins qu'il ne respecte pas les règles de gestion de la mémoire qu'ils ont déjà mis en place. Si la documentation ne dit pas tout ce que vous pouvez assumer les règles par défaut applicables.

La documentation indique très clairement ce droit en haut du fichier:

  

Comme NSArray, les instances de NSMutableArray maintenir de solides références à leur contenu. Si vous n'utilisez pas la collecte des ordures, lorsque vous ajoutez un objet à un tableau, l'objet reçoit un retain. Lorsqu'un objet est retiré d'un tableau mutable, il reçoit un message de libération. S'il n'y a pas d'autres références à l'objet, cela signifie que l'objet est désalloué. Si votre programme conserve une référence à un tel objet, la référence devient invalide à moins que vous envoyez l'objet d'un message à retenir avant qu'il ne soit supprimé du tableau.

Il n'y a pas de point documenter cela à plusieurs reprises pour chaque méthode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top