如何调试大型UIView内存分配

时间:2012-07-14 19:54:18

标签: ios debugging memory uiview calayer

我正在尝试减少应用程序中的内存使用量,并且使用Instruments进行分析显示UIView drawLayer:inContext:分配2.25 MB。我假设分配是在我的代码被调用之前完成的,并且是由于某处的UIView或CALayer大小不正确。但是我的代码都没有参与分配(见下图),因此我不知道如何调试它。我认为,我已经检查了所有的观点和图层,但我没有看到任何错误。

感谢任何想法!

enter image description here

2 个答案:

答案 0 :(得分:3)

别担心。系统正在为层分配后备存储,恰好是640 * 960 * 4字节。

如果你没有泄漏图层或视图,那么在你的视图被卸载的那一刻,你最终会得到你的字节。

答案 1 :(得分:2)

iOS应用程序不会在内存不足时突然崩溃 - 它们会卸载不需要的视图并向视图控制器发送内存警告。如果您的应用程序崩溃似乎与内存有关,请确保您正确处理内存不足的情况:实施-didReceiveMemoryWarning-viewDidUnload以删除不需要的数据。

视图可以使用大量内存。 UIViewController将在需要时释放其视图,但如果您有另一个强大/保留指向同一视图的指针,则视图控制器继承的功能将无法释放该视图,并且视图永远不会被释放即使不需要它。听起来这可能是你的情况,因为它是一个大块的内存,大小适合全屏视图。查看视图控制器以获取指向视图控制器视图(或任何其他视图)的其他指针,并确保将这些指针设置为nil或释放它们(取决于您是否使用ARC)。