为什么setFrame会增加图层的引用次数?

时间:2008-12-21 14:05:58

标签: iphone cocoa-touch

执行此代码:

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

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

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

2 个答案:

答案 0 :(得分:4)

正如在stackoverflow上多次说过的那样,不要依赖refcount来进行内存管理。按照memory management rules进行操作即可。

答案 1 :(得分:4)

格雷厄姆是正确的,但它增加引用次数的原因是你在这里使用核心动画;图层的帧更改是动画的,并且在动画期间保留目标对象。在动画持续时间之后(我相信默认为0.25秒),您的引用计数应该减少1。