取消特定UIView动画的代表

问题描述:

当我删除视图并释放对象时,我的视图正在进行动画处理时,我收到setAnimationDidStopSelector中函数集调用的崩溃。我不是100%确定这只是一个UIView动画的情况下被释放,而动画发出的回调被调用到释放的对象中,但我怀疑它必须处理一些必需的清理。取消特定UIView动画的代表

当清理可能有动画目标选择器的UIViews时,我应该做些什么,即以某种方式将委托设置为nil?如果是这样,我不确定如何进入该特定的动画来取消委托。

是否有其他明显的潜在原因造成这次事故?基本上,我开始播放动画,然后在清理并释放视图动画以及接收回调的对象后不久。

可能不是解决方案,但您是否也调用过setAnimationDelegate?它应该保留委托,以避免您的早期版本发生。

+0

感谢提醒,它被保留。实际上,问题在于我从场景中移动并清理,实际上我有一个用作代理的Adapter类。然后这个类调用一个处理回调的C++监听器。当我清理并释放obj-c适配器并在清理C++类后不久,保留的适配器被动画停止调用,并尽职地将它传递给现在已经死亡的C++类。 当我清理C++对象时,通过将Adapter的侦听器设置为nil,我得到了一些工作。可能并不理想,但它有效。 :) – Joey 2010-07-16 23:49:28

+0

这就解开了这个谜团吧?你做到了这样,setAnimationDelegate没有“保留”有效的C++委托。 – mvds 2010-07-17 00:11:15