【发布时间】:2010-08-23 21:19:02
【问题描述】:
我有一个基于导航的应用程序,带有 5 个 ViewController。在用仪器检查内存分配后,我发现内存在永久增加。该应用程序以 2 MB 启动,在浏览完所有 5 个 Navigationcontrollers 后,它会增长到 10 MB 并且还在增加...... 对于每个分配的对象,我的代码中都有一个相应的释放(在 dealloc 或其他地方),所以显然没有内存泄漏。 Instruments 还告诉我找不到内存泄漏。
如何解决这个内存问题?在某个时间点,在向前和向后浏览视图后,会出现内存不足警告并且背景图像消失(我没有取消分配图像,所以 iphone 会自行处理)。
如何确定“内存泄漏”问题的根源?只要应用程序还活着,图像是否有可能缓存在某个地方并保存在内存中?
我总是这样分配图像:
UIImage *kaufpreisImage = [[UIImage alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"kaufpreis_background_green18px" ofType:@"png"]];
图像位于资源文件夹下。
非常感谢您的帮助!我找不到解决办法!
非常感谢您
问候菲尔
编辑:
剩下的唯一问题是当我尝试发送电子邮件时。我想发送一封电子邮件,其中包含电子邮件正文中的多个 html 表格和图像。图像是 base64 编码的。发送多封邮件后,我收到内存不足警告,尽管我在 sendMail() 方法中释放了所有内容(图像、数字等)。
有谁知道发送 base64 编码图像是否会导致问题?谁能给我一个提示,我如何在电子邮件正文中发送图像(例如,作为 html 表中的背景图像,如 style="background-url(data:image/png;base64,%@)")?为了澄清,这有效。图像被发送到客户端(在 MacOS 上测试)但有时会出现内存问题...
非常感谢
【问题讨论】:
-
感谢大家的回复。单例方法比将所有图像保留在适当的 ViewController 中效果要好得多。
标签: iphone memory memory-leaks