2010-06-23 28 views
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肯定是泄漏的,但是如果我在完成塊中釋放或autorelease它,我的應用程序崩潰,並且在[UIView transition ...]消息之後它會崩潰。什麼是重構這個最好的方法,所以我不會泄漏我的記憶? (我的這些小東西30做)。

回答

1

它泄漏,因爲你以後+alloc -ed

UIView *tempContainer = [UIView alloc]; 

你馬上將其覆蓋。

tempContainer = [self.view viewWithTag:700]; 

它崩潰時-release,因爲你不擁有壓倒一切的視圖([self.view viewWithTag:700])。

+0

aha,gotcah。我將其更改爲UIView * tempController = [self.view viewWithTag:700];現在我沒有看到任何泄漏,也不需要釋放tempController,因爲它只是指向某個其他視圖的指針。謝謝! – Jeof 2010-06-23 16:25:51