我正在尝试减少应用程序中的内存使用量,并且使用Instruments进行分析显示UIView drawLayer:inContext:分配2.25 MB。我假设分配是在我的代码被调用之前完成的,并且是由于某处的UIView或CALayer大小不正确。但是我的代码都没有参与分配(见下图),因此我不知道如何调试它。我认为,我已经检查了所有的观点和图层,但我没有看到任何错误。
感谢任何想法!
答案 0 :(得分:3)
别担心。系统正在为层分配后备存储,恰好是640 * 960 * 4字节。
如果你没有泄漏图层或视图,那么在你的视图被卸载的那一刻,你最终会得到你的字节。
答案 1 :(得分:2)
iOS应用程序不会在内存不足时突然崩溃 - 它们会卸载不需要的视图并向视图控制器发送内存警告。如果您的应用程序崩溃似乎与内存有关,请确保您正确处理内存不足的情况:实施-didReceiveMemoryWarning
和-viewDidUnload
以删除不需要的数据。
视图可以使用大量内存。 UIViewController
将在需要时释放其视图,但如果您有另一个强大/保留指向同一视图的指针,则视图控制器继承的功能将无法释放该视图,并且视图永远不会被释放即使不需要它。听起来这可能是你的情况,因为它是一个大块的内存,大小适合全屏视图。查看视图控制器以获取指向视图控制器视图(或任何其他视图)的其他指针,并确保将这些指针设置为nil或释放它们(取决于您是否使用ARC)。