0

我在 iPod touch 上运行我的 iOS 应用程序,我似乎收到了很多内存警告。不知道为什么会这样,我使用过 Instruments 并且我没有使用那么多内存。无论如何,有时在收到内存警告后,工具栏上的一些 UIBarButtonItems 会消失(例如,导航控制器中的后退按钮)。

这是一个真正的问题,唯一的解决方法是杀死应用程序并重新启动。我该如何处理这种情况?也许有一种方法可以重新加载栏按钮项目?有没有人遇到过类似的情况,您将如何进行?

谢谢你的帮助。

编辑:我应该补充一点,我的 UIBarButtonItems 有自定义图像。我在 viewDidLoad 中设置了这些图像。也许内存不足警告会释放这些图像,然后它们就不会再次加载。我想可能是这样,但是我如何确保如果视图再次出现,图像会再次加载?

EDIT2:问题似乎是在 viewDidUnload 我将 BarButtonItems 之一设置为 nil。我认为这实际上是在我设置 IBOutlet 时由 XCode 自动插入的。这是正确的做法,还是我不应该将其设置为零。如果是这样,我以后如何正确重新分配它?

4

2 回答 2

1

如果您在本地设置图像并且没有对它们的强引用,那么一旦超出范围,它们就会被操作系统视为“一次性”。当收到内存警告时,它们被释放。尝试保持对图像的更大范围的参考。

于 2012-08-13T02:43:50.773 回答
0

与其治疗症状(UIBarButtons 消失),不如尝试找出您的程序在哪里泄漏内存。以下是查找内存泄漏的一些提示:

  1. 浏览您的代码并找到您 malloc 的所有实例并确保您正在解除分配
  2. 使用分析器查找内存泄漏,大多数情况下它会命名未正确释放的对象。
  3. 查看有关查找泄漏的演示文稿。

最后,在您确定没有出现内存泄漏和那些警告,但您的按钮仍然消失之后,请在新问题中发布一些代码。

于 2012-08-13T02:42:41.840 回答