调用presentModalViewController后卸载View?

时间:2011-04-14 20:11:13

标签: iphone memory-management sdk view switch-statement

我有一些视图控制器,我用以下方法调用:

myViewController *myView = [[myViewController alloc] initWithNibName:nil bundle:nil];
    myView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:myView animated:YES];
    [myView release];

如果我使用该应用程序几次,我会收到内存警告,应用程序会冻结几秒钟!我认为原因是我切换视图但没有解除旧的!! !! !! !! (我将我的出口设置为零并释放它们)

如何切换到新视图后卸载旧视图?

提前致谢

3 个答案:

答案 0 :(得分:0)

切换视图时,请务必在myViewController上调用dismissModalViewController:(BOOL)。

答案 1 :(得分:0)

在启动modalViewController的类中,您可以为保留的模态viewcontroller创建一个属性。然后你可以写这样的东西。

//This would be in an action or something...
if (self.myViewControllerProperty == nil) {
    self.myViewControllerProperty = [[[MyViewController alloc] initWithNibName:nil bundle:nil] autorelease];
}

[self presentModalViewController:self.myViewControllerProperty animated:YES];

然后而不是设置

  

myView.modalTransitionStyle =   UIModalTransitionStyleCoverVertical;

将该代码移动到modalViewController并写入self.modalTransitionStyle = UIModalTransitionStyleCoverVertical;我认为看起来更干净,保持每个viewcontroller的配置不会混淆。

正如maclema所说,打电话给dissmissModalViewController,但你可能正在这样做......

答案 2 :(得分:0)

可能是任何数量的问题,但您不需要(也不能)卸载旧视图。确保在所有视图控制器的viewDidUnload中释放对象并将插座设置为nil。发生内存警告时将调用viewDidUnload,因此如果您没有正确处理它,您将会发生泄漏并可能崩溃。除此之外,很难知道你的应用程序正在做什么导致崩溃。