用于uinavigationcontroller的iOS开源智能控制器push / pop lib?

时间:2014-06-23 19:07:17

标签: ios objective-c uinavigationcontroller

我有一个应用程序,用户可以无限深入地推入视图(推送到导航堆栈)。在某些时候,会有一个记忆警告。我想从导航控制器中删除视图控制器并取消它们。如果用户返回到那些视图控制器,我想重新创建视图控制器并将它们推回到堆栈中的正确位置。

这是考虑这个问题的正确方法吗?

是否有一个开源项目可以做到这一点?它似乎不是一个罕见的问题,我宁愿不重新发明轮子。

1 个答案:

答案 0 :(得分:2)

有段时间您需要确保对viewDidLoadviewDidUnload的调用正确匹配,以便可以通过这种方式处理内存警告。从iOS 6开始,不再需要这样做了。

正如viewDidUnload的文档中所述:

  

在iOS 5及更早版本中,当出现内存不足的情况时   当前视图控制器的视图不需要,系统可以选择   在视图控制器的视图之后调用此方法   释放。这种方法是您进行任何最终清理的机会。如果   视图控制器存储了对视图或其视图的单独引用   子视图,您可以使用此方法来释放这些引用。您   也可以使用此方法删除对任何对象的引用   您创建的是为了支持视图,但现在不再需要了   观点消失了。您不会使用此方法来释放用户数据   或任何其他无法轻易重建的信息。

     

在iOS 6及更高版本中,清除对视图和其他对象的引用   你的视图控制器是不必要的。

如果您手动将大对象保留在内存中(例如图像或视频数据),则可以覆盖didReceiveMemoryWarning以在必要时释放这些对象。