2008-12-21 4 views
0

exécution de ce code:Pourquoi setFrame augmente le nombre de références du calque?

mainLyr = [[CALayer layer] retain]; 
[mainLyr setFrame:CGRectMake(0.0,0.0,23.0,23.0)]; 

Débogueur, je trouve que, après retain, le nombre de référence de mainLyr est 2. Ceci est correct.

Mais après setFrame, le nombre de références a augmenté à 3. Pourquoi? Et comment savoir si une méthode va augmenter ou diminuer le nombre de références (ne peut pas trouver cela dans le manuel de référence).

Répondre

4

Comme cela a été dit plusieurs fois sur stackoverflow, ne comptez pas sur le refcount pour votre gestion de la mémoire. Suivez le memory management rules et vous ferez bien.

4

Graham a raison, mais la raison pour laquelle il incrémente le nombre de références est que vous utilisez Core Animation ici; Le changement de cadre d'une couche est animé, et pendant l'animation, l'objet cible est conservé. Après la durée de l'animation (par défaut 0,25 sec, je crois), votre nombre de références devrait diminuer de 1.

Questions connexes