Quelles sont les différences entre gratuit, dealloc, la libération et l'autorelease?
Quelqu'un peut m'expliquer les différences entre free()
, release
, autorelease
et dealloc
?
Vous devez vous connecter pour publier un commentaire.
Quelqu'un peut m'expliquer les différences entre free()
, release
, autorelease
et dealloc
?
Vous devez vous connecter pour publier un commentaire.
free()
est une fonction C que vous utilisez pour disposer de plus nécessaires mémoire que vous avez obtenu à traversmalloc()
ou une autre fonction qui est documenté pour exiger free() pour libérer sa mémoire par exemplestrdup()
.-dealloc
est un Objectif-C sélecteur qui est envoyé par l'Objective-C d'exécution d'un objet lorsque l'objet n'est plus la propriété de toute partie de la demande.-release
est le sélecteur de vous envoyer à un objet pour indiquer que vous êtes à renoncer à la propriété de cet objet. Une fois qu'un objet n'est pas possédé par quelqu'un, il est envoyé à la-dealloc
message par le runtime.-autorelease
est un sélecteur de vous envoyer à un objet pour indiquer que vous avez à renoncer à la propriété de l'objet. Toutefois, si personne ne détient maintenant l'objet de la finale-dealloc
sera différé jusqu'à ce que certains non précisée plus tard. En fait, ce que vous faites vraiment est le transfert de votre propriété à un autorelease pool qui sera ensuite relâchez-le quand il est lui-même libéré (ou vidé).Vous ne devez jamais envoyer
-dealloc
à un objet à l'exception desuper
dans l'objet-dealloc
méthode.Des 4 méthodes vous avez mentionné que vous aurez en général seulement utiliser
release
etautorelease
en objective-c.free
peut-être utilisé lorsque vous avez utilisé le c etmalloc
sinon, vous devez utiliserrelease
etautorelease
.dealloc
ne devrait pas être appelée par n'importe quel de votre code, car il peut interférer avec le conserver/cycle de publication que l'objective-c utilise pour garder une trace de ressources. À l'aide dedealloc
sera presque certainement entraîner des plantages lors de l'exécution si vous jamais l'utiliser.L'ultime ressource de l'utilisation de la
release
etautorelease
est le Pomme de gestion de la mémoire de la documentationfree
est à l'opposé demalloc
et est utilisé dans les C. Vous aurez probablement pas très bien la programmation en Objective-Crelease
lorsque vous avez terminé avec elleautorelease
un objet. Cela libère automatiquement à la fin de l'exécution de la boucle d'itérationdealloc
. Vous ne devez pas appeler cette méthode vous-mêmeVous "propre" d'un objet si vous
alloc
,new
,retain
oucopy
il.Apple fournir quelques bonnes documentation sur ce.
init
, vous possédez un objet que vous créez avecnew
,alloc
ou une méthode contenant le motcopy
. Vous détenez également un objet de vous retenir.