如何通过基于块的动画序列避免泄漏?

时间:2010-06-23 15:57:18

标签: iphone ios4

我正在尝试使用翻转过渡在我的UI中制作小的子视图。为了使Flip转换正常工作,我创建了一个临时UIView来提供上下文,运行转换,然后需要清理。但我无法确定如何在不崩溃应用程序的情况下释放对象。这是代码块:

UIView *tempContainer = [UIView alloc];
tempContainer = [self.view viewWithTag:700];

[UIView transitionWithView:tempContainer
        duration:2
        options:UIViewAnimationOptionTransitionFlipFromRight
        animations:^{ 
                    [[[tempContainer subviews] objectAtIndex:0] removeFromSuperview]; 
                    [tempContainer addSubview:newImageView];
                    [newImageView release];
                    } 
            completion:^(BOOL finished){
                    [tempContainer release]; //Crashes app
                    }];

我正在为iOS4使用基于块的动画技术。问题是我的tempContainer肯定是泄漏了,但是如果我在完成块中释放或自动释放它,我的应用程序崩溃,并且我在[UIView transition ...]消息之后执行它,它崩溃了。重构这个的最佳方法是什么,所以我不会泄露我的记忆? (我有30件这样的小事要做。)

1 个答案:

答案 0 :(得分:1)

它泄漏是因为你+alloc - 编辑

之后
UIView *tempContainer = [UIView alloc];

你立即覆盖它。

tempContainer = [self.view viewWithTag:700];

当您-release时,它会崩溃,因为您不拥有覆盖视图([self.view viewWithTag:700])。