1

我正在使用翻转过渡为整个 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 件这样的小事要做。)

4

1 回答 1

1

它泄漏是因为在你+alloc-ed之后

UIView *tempContainer = [UIView alloc];

你立即覆盖它。

tempContainer = [self.view viewWithTag:700];

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

于 2010-06-23T16:03:07.780 回答