objective-c - iOS:内存警告使按钮消失

标签 objective-c ios memory warnings memory-leaks

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

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

感谢您的帮助。

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

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

最佳答案

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

关于objective-c - iOS:内存警告使按钮消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11927569/

相关文章:

ios - 在 Objective-C 中解析 JSON 中的 JSON

ios - 如果轻轻触摸,Force Touch 动画会卡住

objective-c - 为 Web 浏览器到 native 应用程序切换设置 apple-app-site-association (iOS 8)

ios - 将取消发布的 iOS 应用程序链接到 App Store

objective-c - GHUnit 在 iOS 项目中转换为 ARC 后出现 allocate_pages() 错误

memory - 允许的内存大小为 16777216 字节耗尽(试图分配 78 字节)

php - 在脚本启动时最小化 PHP 内存使用

c - 结构数组中的内存对齐

objective-c - RestKit 0.20 映射问题

ios - 如何根据内容大小获取 CollectionViewCell 内容高度?