Je l'ai testé et on dirait que ça fait. Donc, ma question est, est-ce que cela incrémente toujours le nombre de retenties?
Donc, chaque fois que je fais quelque chose comme ça: p> am je fuit réellement la mémoire? P> < p> J'ai juste la propriété nommée, il n'y a pas de propriété pour elle dans mon en-tête, donc pas de getter et de setter. Dans mon Maintenant, je pensais que cela fonctionnerait et je peux ensuite libérer J'ai une propriété globale @property (nonatomic, conserver) Uilabel * ingrédientstextLabel; code> que j'instéenne dans
ViewDidLoad code> avec ce code: del> P>
ViewDidloadload code>: p>
ingénientstextlabel code>, mais Retenir le compte est 2, alors dois-je aussi libérer i après i Addsubview aussi bien strong>? Je n'ai pas réalisé que cela se produit! : ( p> p>
3 Réponses :
Oui, "AddSubView" augmente le nombre de retenues. Cela a du sens car la méthode stocke la sous-vision qui ne doit pas être libérée / libérée tant que le SUPERVIEW est également publié. Lorsque la version SUPERVIEW est publiée, elle libère également toutes ses sous-visions. p>
Correct. Thomas, vous n'avez pas besoin de faire une autre version après AddSubview: vous devriez simplement vous inquiéter de libérer une fois par alloc / init. Si AddSubView: Augmente le nombre de retenues, il est de sa responsabilité de le libérer.
Oh bien ... je vois. Merci. Cela signifie-t-il que si j'étais alloc / init un UIView, ajoutez-le sous forme de sous-visView de self.view code> puis libérez-le que le compte de contention est toujours 1? Ainsi, même si je l'ai publié, puis-je toujours envoyer des messages informatiques? Merci
Oui c'est correct. Mais si vous stockez une référence à votre UIView, vous devez également conserver cet UIView. Ce n'est pas parce que c'est le style cococa / obj-c.
Le nombre absolu retenir le nombre d'un objet n'a pas de sens. P>
Vous devez appeler Voir le Directives de gestion de la mémoire pour plus de détails. P>
Si vous + NOUVEAU / + ALLOC / --Retain / -Copiez (NARC) Un objet, vous devez équilibrer le conserver avec une libération (ou une auto-cercease). Fin de l'histoire. Le comptage de retenue absolu, en particulier l'absolu de conserver le nombre d'une instance d'une classe sous-classée d'une classe-cadre et / ou EM> adoptée dans le code-cadre, est un détail de mise en œuvre et assez susceptible de ne pas être ce que vous pense que ça devrait être. p> libérer code> le même nombre de fois que vous avez amené l'objet à retenir. Pas moins (sauf si vous aimez les fuites) et, certainement, plus (sauf si vous aimez les accidents). P>
En fait, ça fait.
Vous pouvez vous renvoyer ceci à Bien sûr, la SuperView conserve la sous-visVIEW sur AddSubView: il est donc libéré lors de la suppression de la sous-Signifie. P>
P.s. Le côlon à la fin du lien est nécessaire.
+1 Pour répondre à la question, mais vous avez écrit «en fait cela». Que fait? Qu'est ce que ça fait? Je suis confus! (Modifiez votre réponse à l'aide du lien «Modifier» sous le texte de votre réponse).
Wow, seule une réponse sur une année et un peu plus tard que la question a été posée et a en effet répondu! Scrimer Je pense que Jason en disant "en fait" à la question "L'incrément dedsubview incrément retient-il?". Pas que rien d'entre cela importe avec l'avènement du comptage automatique de référence. : p
Oui, "En fait," est "est pour la question" DoDsubview incrément retient le nombre? "