导航控制器太多了?

时间:2011-09-29 14:12:56

标签: ios uinavigationcontroller viewcontroller

我认为我的项目做得非常糟糕。我正在制作一个项目,基本上是一组视图控制器,其中一些视频控制器,其他视频图像。我创建了一个模型,但我认为我正在推动导航控制器过多地执行它不应该用于它的内容。

这就是我做的:我创建了四个视图控制器和一个导航控制器。第三个视图控制器有一个MPMoviePlayer作为子视图。我从它的超级视图控制器的任何转换视图中删除它,但是在我看来,如果我将有一百个这些视图控制器,在它们的第100个意味着卸载了99个视图。这不是一个真正生病的问题,或者我没有任何理由吓坏了?因为我不知道如何以另一种方式做到这一点。 谢谢。

2 个答案:

答案 0 :(得分:1)

你是否严格单向移动,即只推动视图控制器并且永远不会弹出它们?这是非常糟糕的做法,尽管通过适当的内存管理,您可以在应用程序崩溃之前在堆栈中获得大量的VC。

如果您以不是来回堆栈(如导航控制器)或使用像Tab栏这样的全局控件的方式在四个VC之间跳转,那么最好删除之前的视图从它的superview并用新视图替换它。例如,在您的app delegate中:

-(void)switchToView:(UIViewController*)newVC
{
    if (self.currentVC!=nil)
        [self.currentVC.view removeFromSuperview];
    self.currentVC = newVC;
    [self.window addSubview:newVC.view];
}

答案 1 :(得分:0)

UIViewController会在需要时卸载它的视图。如果您的深度为100级,则只会加载一些视图。这就是为什么实施viewDidUnload并将IBOutlet设置为nil非常重要。