CALayer的子类在制作动画时会产生EXC_BAD_ACCESS,但直接实例却没有?

时间:2011-11-13 03:38:16

标签: ios ios5 core-animation calayer exc-bad-access

touchesMoved事件处理程序中...为什么会中断:

CALayer *slayer = (CALayer*)[[self.layer sublayers] objectAtIndex:0];
slayer.position=CGPointMake(x,y);

但这很好用:

CALayer *slayer = (CALayer*)[[self.layer sublayers] objectAtIndex:0];

[CATransaction begin]; // temporarily disable layer animations
[CATransaction setValue:(id)kCFBooleanTrue  forKey:kCATransactionDisableActions];
slayer.position=CGPointMake(x,y);
[CATransaction commit]; 

对于CALayer的子类,但两者似乎都适用于类CALayer本身的实例?

更多细节......

令人沮丧的是,应用程序在iOS 4.3下运行得很好,现在当我尝试为其参数设置动画时,相同的代码正在生成EXC_BAD_ACCESS

我了解当您向已删除的对象发送消息时会生成EXC_BAD_ACCESS,因此在尝试解决此问题时,我已经注意确保所有图层都被保留并存储在一个缓存,所以它们会一直存在,直到我清除缓存。我还检查了所讨论的图层的保留计数,它是3,在通话中断了事情,所以它似乎是一个有效的图层。我尝试使用NSZombieEnabled运行,但它会产生相同的结果,并且没有不同的错误消息。

有什么我想念的吗? iOS4.3和iOS5之间有什么变化吗?什么导致我所谓的ok层崩溃核心动画?


fwiw:我在2009年6月的Macbook Pro上使用Xcode 4.2。

0 个答案:

没有答案