2011-08-09 76 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];