任何人都可以帮助我吗?我的应用程序在演练中崩溃,我已禁用NSZombies,我也有此代码
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
}
但我的应用仍然崩溃。该应用程序包含图像和一些加载本地图像的webview。请指导我如何优化应用程序以避免崩溃。
提前致谢
答案 0 :(得分:3)
屏幕截图显示了多个错误:
该应用程序被系统杀死,因为您分配的内存过多。
使用261.4MB
内存太多了!你说你正在加载本地图像。确保这些图像尽可能小(像素大小),并且只在当前视图中需要时才保留在内存中。这里有很多关于如何做到这一点的讨论。如果找不到解决方案,请在代码中发布新问题,详细说明图片数量及其像素大小,是否使用ARC,以及尝试修复的内容。使用Xcode的Allocations Instruments工具找出代码中你分配太多内存的位置。
控制台日志显示了许多自动布局约束问题。
这些也应该修复。如果您无法解决此问题,请发布新问题以及此类问题的更多详细信息。关于这些问题的讨论也很多,应该有所帮助。使用本网站的搜索功能!
答案 1 :(得分:0)
当您完成任何已分配的对象时,请将它们显式设置为nil以释放内存。
即使您使用ARC,也会加快清理速度。
答案 2 :(得分:0)
我以某种方式找到了放大内存使用量的方法,我只需要为ViewControllers的每个viewDidLoad执行removeAllCachedResponses,因为当触发内存警告时,didReceiveMemoryWarning很晚或被推迟以清除缓存的响应,它可能看起来不太好代码,但它可以防止存储和填充内存和缓存。我不能称之为解决方案,但它在某种程度上是一种避免内存泄漏的有效预防方法。