我尝试通过创建视图控制器来创建自定义标签栏控制器,然后在屏幕底部添加按钮。在这个VC中,我将引用其他4个视图控制器,并在用户单击按钮时切换它们。与使用UITabBarController
相比,我不确定这种方法是否会造成任何问题。
我需要这样做,因为中间的标签按钮中会有一个3D对象,我想我不能用默认的UITabBarController
来做这件事。
我想的是这种方法会导致内存不足问题,因为我在内存中保留了太多的对象(4个视图控制器),并且每个视图控制器都有大量的图像和图像。动画片。不确定这是否与UITabBarController
相同,或者Apple在这里有一些处理内存管理的好方法。
请帮忙!
感谢。
答案 0 :(得分:1)
总的来说,如果这还不是一个明显的问题,我认为你过早地进行了优化。如果您使用UIViewController Containment
(A good guide here)正确实施容器,则不应该有任何内存问题。
该文章的例子:
当您添加子视图控制器(切换到"选项卡")时,您可以执行以下操作:
UIViewController *newTabViewController = [UIViewController new];
[self addChildViewController:newTabViewController];
[self.view addSubview:newTabViewController.view];
[newTabViewController didMoveToParentViewController:self];
然后,当您从选项卡转换以及上面的代码转到新选项卡时,您会这样做:
[oldTabViewController willMoveToParentViewController:nil];
[oldTabViewController.view removeFromSuperview];
[oldTabViewController removeFromParentViewController];
使用包含API将调用正在转换的viewcontrollers上的所有相应视图生命周期方法(viewWillAppear:
viewDidAppear:
viewWillDisappear:
viewDidDisappear:
)
为了使您的各个标签更具内存效率,请务必在viewDidDisappear:
中进行适当的清理,然后在viewDidAppear:
中重建。
尽管如此,这可能不是一个问题,除非您的个人视图控制器在内存中保留非常大的图像或类似的东西。您必须记住,所有现有容器还会将所有视图控制器保留在内存中而不会出现问题。