我认为我的项目做得非常糟糕。我正在制作一个项目,基本上是一组视图控制器,其中一些视频控制器,其他视频图像。我创建了一个模型,但我认为我正在推动导航控制器过多地执行它不应该用于它的内容。
这就是我做的:我创建了四个视图控制器和一个导航控制器。第三个视图控制器有一个MPMoviePlayer作为子视图。我从它的超级视图控制器的任何转换视图中删除它,但是在我看来,如果我将有一百个这些视图控制器,在它们的第100个意味着卸载了99个视图。这不是一个真正生病的问题,或者我没有任何理由吓坏了?因为我不知道如何以另一种方式做到这一点。 谢谢。
答案 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
非常重要。