UINavigationController和“无限”下钻

时间:2013-10-19 16:20:56

标签: uinavigationcontroller ios7

有没有人有关于iOS如何处理UINavigationController堆栈的信息和确定信息,用户可以使用它来继续钻取。它是否真的会通过保存以前控制器的状态来开始释放内存?

之前已经在这里提出过这个问题,但是答案是矛盾的,所以如果有人真的知道如何处理它会非常有用。

如果没有,是否有人知道将处理此问题的子类?

1 个答案:

答案 0 :(得分:1)

基本上,它取决于控制器的实现。

当你继续将控制器推到导航控制器上时,最终内存会变低。但是,当内存不足时,您在导航控制器上推送的控制器将不会为您释放。

您的控制器会收到一个通知,该通知在您的控制器的didReceiveMemoryWarning方法中处理。在那里,您可以释放控制器中不再需要的所有对象,或者在弹出控制器时可以重新创建。

  

内存是iOS中的关键资源,视图控制器提供内置支持,可在关键时刻减少内存占用。 UIViewController类通过didReceiveMemoryWarning方法提供一些自动处理低内存条件的方法,该方法释放不需要的内存。

     

在iOS 6之前,当发生内存不足警告时,UIViewController类会清除其视图,如果它知道它可以重新加载或稍后再次重新创建它们。如果发生这种情况,它还会调用viewWillUnload和viewDidUnload方法,使代码有机会放弃与视图层次结构关联的任何对象的所有权,包括从nib文件加载的对象,在viewDidLoad方法中创建的对象以及创建的对象懒惰地在运行时并添加到视图层次结构中。在iOS 6上,视图永远不会被清除,并且永远不会调用这些方法。如果视图控制器需要在内存不足时执行特定任务,则应覆盖didReceiveMemoryWarning方法。

相关问题