objective-c - 递归不崩溃

标签 objective-c ios animation recursion

我已经将其编码为 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/

相关文章:

ios - Obj-c - 在字典中对数组进行排序?

iphone - self.navigationController 和 delegate.navigationController 有什么区别

ios - WKwbview navigationresponse如何获取请求的URL

c# - 如何使用 Xamarin.iOS 从 iPad 上的 UISearchDisplayController 更改清除按钮中的文本?

ios - 如何从OSS存储库的源代码创建和导出iOS框架?

javascript - 如何向此 Accordion 添加动画?

ios - 从 NSDictionary 键填充单元格

ios - 触摸 SChartColumnSeries 中的点时 ShinobiChart 抛出异常

javascript - 如果浏览器,使用 Javascript?

model-view-controller - MVC中谁负责动画?