viewDidUnload的dealloc之后叫什么?

当我调试我的iPad应用程序,我发现,由于内存不足,有些视图控制器“ viewDidUnload接到电话。 但几秒钟后,他们的viewDidLoad被调用。 然后再次由于内存不足, viewDidUnload ,然后viewDidLoad试。 这就好比文件系统保持交换文件,由于内存不足。

难道应该是这样的,还是我做错了什么?

然后,我想释放视图控制器摆脱这一点。 但有时viewDidUnload之前被调用dealloc ,然后崩溃由于选择发送到释放视图控制器。

感谢您的任何帮助。

--------------解决方案-------------

这是完全正常的行为。 viewDidUnload被称为在内存不足的情况通知您的控制器的观点已被释放。

还有的视图控制器编程指南适用于iOS中的步骤清晰的轮廓。

特别地,看看意见如何加载和卸载一节了解详细的操作步骤,它涵盖了卸载循环:

  1. 该应用程序接收到一个低内存从系统警告。
  2. 每个视图控制器调用它的didReceiveMemoryWarning方法。 如果覆盖此方法,你应该用它来释放任何内存或对象视图控制器对象不再需要。 不要用它来释放你的看法controller’的观点。 你必须在你执行某些时候调用super,以确保默认实现运行。 默认实现尝试释放的观点。
  3. 如果视图不能安全地释放(例如,它是在屏幕上可见),默认的实现的收益。
  4. 视图控制器调用它的viewWillUnload方法来通知子类的意见,即将被删除。 子类通常会覆盖viewWillUnload方法时,它需要保存任何视图属性的视图销毁。

等等。

在特定的情况下,你肯定不希望在这种情况下,释放视图控制器。 如果有你想要做的,同时有低内存的任何进一步的内存管理,您应该重写didReceiveMemoryWarning的默认实现。 作为文档状态,不要忘记调用[super didReceiveMemoryWarning];

分类:IOS 时间:2013-06-04 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.548 (s). 10 q(s)