Ios 为什么连续UIView动画同时显示?

Ios 为什么连续UIView动画同时显示?,ios,animation,uiview,uikit,uiviewanimation,Ios,Animation,Uiview,Uikit,Uiviewanimation,我写了一些代码,可以在屏幕上按顺序移动一些对象。当每个对象完成移动时,下一个对象开始移动 代码的结构与此类似: 型号: moveObject { // Code to move the object ... [delegate moved:self]; } 代表: moved:(MyClass *)o { UIView* v = [self viewForObject:o]; [UIView animateWithDuration:1.0

我写了一些代码,可以在屏幕上按顺序移动一些对象。当每个对象完成移动时,下一个对象开始移动

代码的结构与此类似:

型号:

moveObject
{
    // Code to move the object
    ...

    [delegate moved:self];
}
代表:

moved:(MyClass *)o
{
    UIView* v = [self viewForObject:o];

    [UIView animateWithDuration:1.0
                     animations:^{
                         [v setCenter: [model center]];
                     }
                     completion:^(BOOL finished){
                         // Move object
                         [model moveObject];
                     }];
}
虽然代码似乎运行正常,但屏幕上发生的事情是,动画被分为若干批:大量动画同时发生,然后另一组动画全部开始

如果我在
[model moveObject]行上放置断点然后,它被多次点击,并将
finished
设置为
true
,而不在屏幕上显示任何动画。然后,偶尔,
finished
将设置为
false
,在我让调试继续之后,所有动画都将在屏幕上执行

编辑

但是,如果我将代码更改为在调用moveObject时偶尔不移动对象,而是返回而不执行任何操作,并等待用户移动对象(从而通过代理的
moved:
选择器调用此代码),则动画的短字符串将按顺序出现

i、 只有当代码处于无限循环中时,问题才会出现


出了什么问题?

您的
moveObject
方法如何确定要移动的模型?您是否从其他地方调用移动对象?像一个环?无关:你甚至能在不与内部类och Objective C冲突的情况下将一个对象命名为“object”吗?@DavidRönnqvist我已经将代码简化了很多。移动对象从别处调用一次,从动画链开始。(我认为moveObject如何选择它移动的模型并不重要。)