2011-08-09 72 views
1

我的應用程序是一個問題遊戲。我有一個視圖控制器Question_1;這是每個問題都會加載的唯一視圖控制器。我在另一個名爲HowToPlay的類中創建了一個數組。該數組使用字符串加載,每個代表一個問題。在Question_1viewDidLoad方法中,它隨機選擇一個問題,然後更改問題的文本。在用戶按下下一個按鈕後,它會重新加載,直到它意識到數組中沒有任何內容可以加載,然後通過控制器加載遊戲。問題發佈視圖控制器

這裏是如何我裝我的筆尖文件重新加載的問題:

[background release]; 
[menu release]; 
[changeOnWrong release]; 
[callPauseLabels release]; 
[youArePaused release]; 
[only1Pause release]; 
[resume release]; 
[afterPause release]; 
[pause release]; 
[timerString release]; 
[timerLabel release]; 
[trueButton release]; 
[falseButton release]; 
[continueButton release]; 
[showYesNo release]; 
[scoreAmmount release]; 


callPauseLabels = nil; 
afterPause = nil; 
countDown = nil; 
Question_1 *Q1 = [[Question_1 alloc] initWithNibName:@"Question 1" bundle:nil]; 

Q1.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:Q1 animated:YES]; 

[Q1 release]; 
Q1 = nil; 

我遇到的問題是,每個這種觀點被重新加載的時候,它不會釋放舊人,並不斷在建設中記憶。這就像每個視圖控制器不斷加載在另一個之上一樣。我需要它釋放舊的視圖控制器。我試過這樣的事情:

[self dismissModalViewControllerAnimated:NO]; 
[self.parentViewController dismissModalViewControllerAnimated:NO]; 

它仍然不會從內存中釋放舊視圖。

+0

看起來像開始使用ARC的正確的一天! – jtbandes

+0

這只是測試版的一部分,我不會能夠從它上傳到應用商店? – Jacob

+0

您可以更改標籤中的文本,刷新定時器數據,刷新按鈕狀態等,而不是加載和釋放對象 – tipycalFlow

回答

1

如果您要一遍又一遍地顯示此視圖控制器,則沒有理由將其丟棄並重新加載。只要堅持在伊娃,並重新配置爲每個問題。

但在回答你的問題,你需要的東西「如」

[self.parentViewController dismissModalViewControllerAnimated:NO]; 

但是,如果你不使用導航控制器或標籤欄控制器,parentViewController不會設置。你需要自己設置它(這可能並不總是安全的;我從來不這樣做),或設置另一個變量來跟蹤你的父母(我通常使用一個委託)。那麼你會這樣做:

[self.delegate dismissModalViewControllerAnimated:NO];