2008-12-21 51 views
0

执行此代码:为什么setFrame会增加图层的引用计数?

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

的调试器,我发现retain后的mainLyr引用计数为2。这是正确的。

但是setFrame之后,引用计数增加到3个。为什么?以及如何确定一种方法是增加还是减少引用计数(在参考手册中找不到)。

回答

4

正如在stackoverflow上多次说过的那样,不要依赖于你的内存管理的refcount。按照memory management rules,你会做得很好。

4

格雷厄姆是正确的,但它增加引用计数的原因是你在这里使用核心动画;一个图层的框架变化是动画的,在动画过程中,目标对象被保留。在动画持续时间(默认0.25秒,我相信)后,您的参考计数应该回落1。

相关问题