执行此代码:为什么setFrame会增加图层的引用计数?
mainLyr = [[CALayer layer] retain];
[mainLyr setFrame:CGRectMake(0.0,0.0,23.0,23.0)];
的调试器,我发现retain
后的mainLyr
引用计数为2。这是正确的。
但是setFrame
之后,引用计数增加到3个。为什么?以及如何确定一种方法是增加还是减少引用计数(在参考手册中找不到)。
执行此代码:为什么setFrame会增加图层的引用计数?
mainLyr = [[CALayer layer] retain];
[mainLyr setFrame:CGRectMake(0.0,0.0,23.0,23.0)];
的调试器,我发现retain
后的mainLyr
引用计数为2。这是正确的。
但是setFrame
之后,引用计数增加到3个。为什么?以及如何确定一种方法是增加还是减少引用计数(在参考手册中找不到)。
正如在stackoverflow上多次说过的那样,不要依赖于你的内存管理的refcount。按照memory management rules,你会做得很好。
格雷厄姆是正确的,但它增加引用计数的原因是你在这里使用核心动画;一个图层的框架变化是动画的,在动画过程中,目标对象被保留。在动画持续时间(默认0.25秒,我相信)后,您的参考计数应该回落1。