我有一个现有的应用程序,我最近对其进行了一些更改,并且我一直在测试这些更改。该应用程序在我测试的每台 iPad(iOS 4 和 iOS 5)上都运行良好。在我的应用程序中加载几个(50+)图像重视图后,我收到内存不足警告,并且我的 viewDidUnload 方法被调用,它们正确地清除了所有控件,我的内存中图像缓存自行清除,应用程序继续美好的。
但是,在 iPhone 4 和 iPhone4s(iOS 5.0.1 和 iOS 5.1)上,我遇到了一个问题,即我的应用程序内存不足而从未收到内存不足警告。加载几个不同的视图后,最终会出现一个新视图并且大部分是空白的,在控制台上我看到内存分配消息,整个手机变得无响应,有时会杀死我的应用程序。
每次发生这种情况的特定视图都不同,因此它与任何一种视图无关,只是随着时间的推移而积累的记忆。我还确认我也没有任何内存泄漏。
这个现有的问题是类似的:
这个答案表明,如果我陷入循环,这可能会发生,但我很确定我的代码没有陷入任何循环。我只是在 UINavigationController 中从一个视图单击到另一个视图,并且在每个视图中加载了几个图像。此外,另一个问题专门发生在 iPad 上,我在 iPad 上没有看到这个问题,只有 iPhone。
顺便说一句,我尝试通过 NotificationCenter 注册内存不足通知,并在我的应用程序委托中有一个 applicationDidReceiveMemoryWarning 方法,并且两者都有断点,但都没有被调用。此外,调试器控制台中也没有显示内存不足消息。
关于可能发生的事情有什么想法吗?
添加于 2012 年 3 月 26 日:
有趣的是,当我在新 iPad 上测试我的应用程序时,它遇到了与我在 iPhone 4 和 4s 上看到的相同问题,即没有收到内存不足通知。所以我想知道我是否看到与其他线程相同的问题:
但是该线程上的开发人员正在测试仅限 iPad 的应用程序,因此没有在任何 iPhone 上测试和发现同样的问题。
我已经进行了一些广泛的测试,并列出了我正确收到内存不足警告的设备和我从未收到过的设备列表。到目前为止,我只在 iOS5 或更高版本上看到了这个问题,但是在 iOS 5.0 和 5.1 的 iPad1s 上我没有看到这个问题,所以这不仅仅是 iOS 5 上所有设备上的问题。
这是该列表:
适当的低内存警告
iPad1 4.2.1
iPad1 5.0
iPad1 5.1
iPad2 4.3.3
iPhone3G 4.2.1
iPod 3G 4.3.3
iPhone4 4.3.3
没有低内存警告
iPhone4 5.1
iPhone4s 5.0.1
iPad3 5.1