我编写了一些代码,可以按顺序在屏幕上移动一些对象。当每个对象完成移动时,下一个对象开始移动。
代码的结构类似于:
型号:
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时偶尔更改代码 not 移动对象,而是在没有操作的情况下返回,并等待用户移动对象,(并因此回调到此代码通过委托的moved:
选择器),然后短的动画串顺序发生。
即。问题似乎只发生在代码处于无限循环中时。
出了什么问题?