1

我只在 iOS 5.0 中遇到问题,在模式视图存在时收到的内存不足警告有时会让我出现白屏 - 我相信这是因为我的标签栏控制器释放了它的所有视图。

在 iOS 4.0 中,相同的场景不会导致问题。我能想到的解释有两种:

  1. iOS 5 使用更多内存,留给应用程序的内存更少
  2. iOS 5 以不同方式处理低内存情况

在 5.0 之前的版本中,我曾经能够通过释放一些额外的内存来响应内存不足的警告。在 5.0 中,似乎我第一次收到内存不足警告,我的模态视图控制器下的所有内容都清除了它的视图。跟踪确认,在内存警告之后,模态视图控制器下的任何控制器都将其view字段设置为nil.

谁能告诉我有关 iOS 5 与早期版本相比如何处理低内存情况的信息(最好来自 Apple)?我希望能够在必要时释放一些内存,而不是清除所有视图。

4

2 回答 2

0

在回答上一段中的问题时,您正在寻找来自WWDC 2011的iOS 深度性能视频。它讨论了 iOS 5 中从大约 13 或 14 分钟开始的低内存处理,并讨论了对低内存警告消息的更改,特别是从大约 16 分钟开始。

我不确定它是否会帮助您弄清楚您的应用程序出了什么问题。

于 2012-02-04T21:55:33.047 回答
0

我也有同样的问题并解决了。问题是我们通过 xib 连接的出口在 viewDidUnload 方法中设置为 nil。当发生内存警告时,对当前不可见的所有视图调用此方法。当我们回到那些视图时,它们的 viewDidLoad 方法被再次调用。解决此问题的唯一方法是将 setNil 方法从 viewDIdUnload 删除到 dealloc 方法,一切都会正常工作。

于 2013-01-25T04:55:20.160 回答