如何管理潜在的无限推动视图控制器到导航控制器堆栈?iOS版

Mic*_*all 4 memory objective-c uiviewcontroller uinavigationcontroller ios

我有一个由UINavigationController组成的应用程序,可以从3个不同的选项卡中推送ViewControllers.

我预见到的问题是当前的结构允许用户无休止地将VC添加到堆栈中.

我有一个名为pharmaceuticals的标签,另一个叫做病原体.如果你在药物中钻得足够远,你可以得到它有效的病原体清单,用户可以选择一种病原体来查看它的更多信息.这导致应用程序推动新的病原体VC.

现在,用户可以深入查看病原体易受影响的药物清单并选择它,这会在药品标签中产生新的VC.

等等等等...

每次有额外的1.5Mb添加到内存占用.

我怎样才能最好地管理这个?

Joh*_*rug 5

您应该专注于通过释放可以轻松重新创建的资源来最小化内存占用,而不是试图阻止用户将100个视图控制器推入堆栈.Apple也不这样做.

打开"iTunes Store"应用程序并搜索"Hugh Laurie",选择专辑"Let Them Talk",然后选择"Hugh Laurie>",然后选择"Let Them Talk",然后选择"Hugh Laurie",依此类推.你可以继续前进和前进.当用户长时间执行此操作时,应用程序可能会耗尽内存并崩溃.

如果你试图在你的丰田皮卡上加载20吨砖块,它可能会像空的Capri Sun包一样被粉碎.这是故意的破坏性行为和恕我直言,如果用户强行尝试超载它,应用程序终止是可以的.

在此输入图像描述

但是,您可以使这一点几乎无法访问,因此通过在屏幕外视图控制器中释放内存,这种情况不太可能发生.实现didReceiveMemoryWarning(例如:如何实现didReceiveMemoryWarning?)来发布可以从磁盘或网络(图像,核心数据对象等)轻松重新创建的内容.这样,你可以降低你的内存占用率,如果他们手上有几个小时,你的用户只能让你的应用程序崩溃而没有比推动视图控制器更好的事情.哪个会很难过.

  • 那辆卡车看起来就像我的捷达之旅!重点是破坏性的行为.为了适应悲伤的VC推动器的边缘情况,限制导航可能100%的情况将是一种耻辱.真的,也许那个悲伤的VC推送者需要让他们的应用程序崩溃,以便他们可以继续他们的生活...... (2认同)