我已经将其编码为 iPad 上的循环图片查看器,认为这很快就会导致 stackoverflow,但到目前为止还没有。它很稳定(不是我在提示)。但这是在事件前开香槟还是……
- (void)showPhotos:(NSMutableArray *)resultSet index:(int)i
{
i += 1;
[UIView animateWithDuration:PHOTO_DISPLAY_TIME
delay:0
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
animations:^(void)
{
//get photourl & set it to imageview
[self.photosImage setAlpha:1.0];
}
completion:^(BOOL finished)
{
if(finished)
{
[UIView animateWithDuration:PHOTO_DISPLAY_TIME
delay:0
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
animations:^(void)
{
[self.photosImage setAlpha:0.0];
}
completion:^(BOOL finished)
{
if(finished)
[self showPhotos:resultSet index:i];
}];
}
}];
return;
}
我正在做的是使图像淡入和淡出。 & 然后再次调用相同的函数。所以这应该会崩溃吧?
最佳答案
即使这看起来像递归,但事实并非如此。动画完成后,完成 block 将被异步调用。这将是在您的方法返回之后。
如果您仍然不确定这一点,您可以在调试器中进行验证。只需在第二次调用方法时放置一个断点,并在每次触发时检查堆栈跟踪。
关于objective-c - 递归不崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962893/