是否保证CAAnimation委托在主线程上得到通知?

时间:2013-01-05 18:06:09

标签: iphone ios multithreading core-animation

核心动画在自己的线程上运行。但是当动画结束时,animationDidStop:finished:是否保证在主线程上运行?它在我的测试中确实存在,但我不知道我是否可以随时和所有iOS版本都依赖它。

2 个答案:

答案 0 :(得分:1)

它确实发生在主线程上,如thread中所述。从iOS 4.0及更高版本开始考虑使用block-based animation methods

修改

对于animateWithDuration:animations:completion:的描述,从官方doc可以看出,完成块是在下一个运行循环周期的开始执行的。我相信如果你在主线程上调用你的方法,我们正在讨论与主线程关联的循环周期。

答案 1 :(得分:0)

我理解是的,animationDidStop:finished:方法总是在主线程上调用,但这是一种理解,而不是保证。

您可能希望将此问题发布到Apple开发人员论坛中的核心动画区域,其中包含Apple工程师权衡的特定请求。有许多Apple员工定期发布这些问题。 (对于Core Animation来说,Rincewind会浮现在脑海中)。