我正在尝试使用翻转过渡在我的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件这样的小事要做。)
答案 0 :(得分:1)
它泄漏是因为你+alloc
- 编辑
UIView *tempContainer = [UIView alloc];
你立即覆盖它。
tempContainer = [self.view viewWithTag:700];
当您-release
时,它会崩溃,因为您不拥有覆盖视图([self.view viewWithTag:700]
)。