我有一个由 UINavigationController 组成的应用程序,它从 3 个不同的选项卡推送 ViewController。
我预见到的麻烦是当前的结构允许用户无休止地将 VC 添加到堆栈中。
我有一个称为药物的选项卡,另一个称为病原体的选项卡。如果您对药物进行足够深入的研究,您将获得其有效对抗的病原体列表,并且用户可以选择一种病原体来查看有关该病原体的更多信息。这会导致应用程序推送新的 PathogenVC。
现在,用户可以深入查看病原体易受影响的药物列表并选择它,这会在药物选项卡中产生一个新的 VC。
等等等等...
每次都会额外增加 1.5Mb 的内存占用。
我怎样才能最好地管理这个问题?
你应该关注最大限度地减少内存占用通过释放资源,您可以轻松地重新创建资源,而不是试图阻止用户将 100 个视图控制器推送到您的堆栈上。苹果也不这样做。
打开“iTunes Store”应用程序并搜索“Hugh Laurie”,选择专辑“Let Them Talk”,然后选择“Hugh Laurie >”,然后选择“Let Them Talk”,然后选择“Hugh Laurie >”,依此类推。你可以继续走下去。当用户长时间这样做时,应用程序可能会耗尽内存并崩溃。
如果您尝试将 20 吨砖块装载到您的丰田皮卡上,它可能会像空的 Capri Sun 包裹一样被压碎。这是故意破坏行为恕我直言,如果用户强行尝试超载应用程序,则可以终止该应用程序。
但是,您可以通过释放屏幕外视图控制器中的内存来使这一点几乎无法到达,因此这种情况不太可能发生。实施didReceiveMemoryWarning
(例子:如何实现didReceiveMemoryWarning? https://stackoverflow.com/questions/2430728/how-to-implement-didreceivememorywarning)来释放您可以轻松地从磁盘或网络重新创建的内容(图像、核心数据对象等)。这样,您就可以大大减少内存占用,并且您的用户只有在有几个小时的空闲时间而除了推送视图控制器之外没有更好的事情可做时,才能够使您的应用程序崩溃。这会很悲伤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)