iOS提供最多30个ViewController(ARC)的最佳方式
我希望将同一个ViewController最多演示30次(最多)。该应用程序通过一系列步骤完成一系列信息。UI仅包含一个显示文本信息的webview,但有时会添加一个tableview,以便用户根据信息回答问题。我已经尝试了很多方法,但是哪种方法是实现这一点的最有效的内存方法,尽管我可以让它正常工作,但我得到了大量的废弃内存,这大大减慢了应用程序的速度(我使用ARC) 选项1 我试过使用iOS提供最多30个ViewController(ARC)的最佳方式,ios,objective-c,uitableview,uipageviewcontroller,Ios,Objective C,Uitableview,Uipageviewcontroller,我希望将同一个ViewController最多演示30次(最多)。该应用程序通过一系列步骤完成一系列信息。UI仅包含一个显示文本信息的webview,但有时会添加一个tableview,以便用户根据信息回答问题。我已经尝试了很多方法,但是哪种方法是实现这一点的最有效的内存方法,尽管我可以让它正常工作,但我得到了大量的废弃内存,这大大减慢了应用程序的速度(我使用ARC) 选项1 我试过使用UIPageViewController,它工作得很好,但在iphone4上它运行缓慢且滞后 [self.pa
UIPageViewController
,它工作得很好,但在iphone4上它运行缓慢且滞后
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
选项2
我尝试过将viewcontroller(打开到自身上)推到另一个位置,它仍然可以正常工作,但是内存没有被释放,被放弃的内存增加到大约20mb a heapshot
用户不必返回到上一个视图,因此在我进行操作时尝试删除堆栈中的ViewController,但内存仍在增加
我已经为这个问题挣扎了好几个星期了,肯定有一个内存有效的解决方案吗
在Mac电脑被扔出窗口之前,一品脱的成功答案:)
提前感谢ViewControlle可能包含太多资源,例如图像、图像视图、视图、标签。。。所有这些UI单元都将占用大量内存。因此,我认为展示30个视图控制器的最佳方式有两点需要注意
试试这个。编码以显示多个项目。我坚持使用
UIPageViewController
。假设您正确使用了数据源
和委托
方法,则在任何给定时间内存中最多应有3个ViewController(当前显示的VC、下一个VC和上一个VC)。iOS将负责这些设备两侧的ViewController的内存管理
如果你想要一个更详细的答案,你应该发布一些代码。从你的问题中不清楚你想要完成什么。我不知道这个答案是否值得,但我认为在你进行时从堆栈中删除视图控制器是正确的方法(最好在你展示下一个视图控制器之后)。因为您使用的是ARC,并且视图控制器没有从内存中删除,所以您必须在某个地方有一个循环引用。我会尝试找到循环引用,因为无论您选择何种路径,如果循环引用持续存在,这些视图控制器将永远不会离开内存。您可以做一些简单的事情来帮助找到它: 首先,检查对未被删除的视图控制器的所有引用。它们是否设置为
nil
其次,检查将视图控制器传递到块中的任何位置(包括从块引用self或self属性的位置)。那个街区被保留在什么地方了吗?或者它正在走向完成并被摧毁
第三,尝试分析应用程序。有时,进入构建菜单并单击“配置文件”会出现有趣的结果
最后,你可以尝试一下乐器。我不知道你会从中发现多少,除了内存泄漏之外,但如果所有其他方面都失败了,那可能值得一试。现在还不完全清楚你在问什么,但只需使用容器视图即可,这些天在iOS中感谢Joe,我会看一看。感谢alot lynulzy以前做过这件事,但在这种情况下没有尝试过。