繁体   English   中英

iOS:内存警告使按钮消失

[英]iOS: Memory warning makes buttons disappear

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

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

谢谢你的帮助。

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

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

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

而不是处理症状(UIBarButtons消失),请尝试查找程序在哪里泄漏内存。 以下是一些有关查找内存泄漏的提示:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM