2

我正在尝试减少我的应用程序中的内存使用量,并且使用 Instruments 的分析表明 UIView drawLayer:inContext: 正在分配 2.25 MB。我假设分配是在调用我的代码之前完成的,并且是由于某处的 UIView 或 CALayer 大小不正确。但是我的代码都没有参与分配(见下图),因此我不知道如何调试它。我想我已经检查了我所有的视图和图层,我没有发现任何问题。

任何想法表示赞赏!

在此处输入图像描述

4

2 回答 2

3

不用担心。系统正在为恰好为 640 * 960 * 4 字节的层分配后备存储。

如果您不泄漏图层或视图,那么您最终会在您的视图被卸载时取回您的字节。

于 2012-07-14T21:09:07.773 回答
2

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

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

于 2012-07-15T01:21:17.893 回答