2011-03-31 44 views
2

請你看一下這段代碼開始:的UIViewController沒有得到來自導航控制器被彈出後釋放,如果動作從UIAlertView中代表

/* This app is a game, the user can click an "abort" button anytime, 
* and he/she is therefore asked for confirmation ("really abort game?") 
*/ 
- (IBAction)btnAbortClicked:(id)sender { 
    UIAlertView *alert = [[UIAlertView alloc] init]; 
    [alert setMessage:@"Really abort game?"]; 
    [alert setDelegate:self]; 
    [alert addButtonWithTitle:@"Yes"]; 
    [alert addButtonWithTitle:@"No"]; 
    [alert show]; 
    [alert release]; 
} 

/* Delegate method (I don't like it, I wish I had modal blocking windows) */ 
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) 
    [self quitGame]; 
} 

/* pop the view controller */ 
- (void)quitGame { 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

問題很簡單 - 但顯然不是足以讓我解決。 UIViewController會彈出,但不會被取消分配。問題與UIAlertView嚴格相關,因爲如果我只是從btnAbortClicked調用quitGame,視圖控制器會彈出並立即解除分配。

相反,它似乎有些神祕的實體保留它。

你能幫我嗎?提前致謝。

+0

對不起,我是一個白癡。這是一個愚蠢的計時器沒有被停用,仍然保持視圖控制器的生命。這個問題確實與UIAlertView無關,這只是偶然的:當用戶完成遊戲而沒有中止時,計時器被正確無效,因此沒關係。當用戶中止遊戲時,我忘記了使計時器無效。對不起,浪費你的時間夥計 – gd1 2011-03-31 23:27:20

回答

1

嗯,我認爲當clickedButtonAtIndex被調用時,你仍然在alertView中。我建議改爲使用alertView:disDismissWithButtonIndex,以便在alertview消失後調用它。

+0

好點,但沒有解決問題。 – gd1 2011-03-31 23:24:59

相關問題