【发布时间】:2013-12-12 20:29:38
【问题描述】:
为了避免模态行为,我允许用户中断正在运行的CABasicAnimation,并且在此应用程序的上下文中,用户的操作需要一个新的状态,其中现有的CALayers 应该不再存在。我没有使用 ARC(这可能是我的问题,但请忍受这个老派问题)。
当用户采取行动时,对于一组活跃的CALayers我这样做:
for(CALayer *c in layerArray){
[c removeAllAnimations];
[c removeFromSuperlayer];
[c release];
}
[layerArray removeAllObjects];
(相信我,无论好坏,这不是CALayers 的过度发布)。但是,从该例程返回并将控制权交还给系统后,系统调用内部 OS 例程 run_animation_callbacks 并崩溃,因为它试图向僵尸发送消息——CALayers 之一已被删除并释放。为什么[c removeAllAnimations] 不足以告诉操作系统停止在该对象上运行回调?
谢谢。
【问题讨论】:
标签: macos caanimation