在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。