2012-02-04 34 views
1

我在iOS 5.0中遇到了一个问题,当存在模态视图时收到低内存警告时,有时会留下白屏 - 我相信会发生这种情况,因为我的标签栏控制器释放了其所有视图。iOS 5是否以不同的方式处理低内存情况?

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

  1. 的iOS 5使用了更多的RAM,5.0之前留下较少的应用程序
  2. iOS 5的对待低内存情况不同

在版本中,我用通过释放一些额外的内存来响应低内存警告。在5.0中,这似乎是我第一次得到低内存警告,我的模态视图控制器下的所有东西都清除了它的视图。跟踪确认,在存储器警告后,模态视图控制器下的任何控制器都将其view字段设置为nil

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

+1

我不知道是否真的这样,但是你实现了 - (void)viewDidLoad,以便所有的视图被加载或设置? – EmilioPelaez 2012-02-04 20:48:55

+0

你应该真的使用viewDidLoad和viewDidUnload来设置你的视图并释放它们。 – Till 2012-02-04 21:11:28

+0

“相同的场景在iOS 5.0中不会导致问题。”你的意思是iOS 4.0吗? – mk12 2012-02-04 21:36:59

回答

0

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

我不确定它会帮助您找出什么是尽管你的应用出了问题。

+0

你的意思是“iOS性能和仪器功耗优化”?我没有看到一个明确命名为“iOS Performance Depth”的软件。 – Bill 2012-02-04 22:26:50

+0

嗯。我也无法在网站上找到它。在iTunes U中,它是会话318. https://deimos.apple.com/WebObjects/Core.woa/BrowsePrivately/adc.apple.com.8266478284.08266478290.8365294549?i=1534533040 – 2012-02-04 22:33:24

0

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

相关问题