我是编程新手(几个月前学会了如何编写应用程序),最近我写了一个应用程序,每次大约5分钟后就会崩溃,并显示几个“Received memory warning. Level=1”警告。在用仪器测试时,我无法检测到任何泄漏,我相当有信心我正确地释放了对象,所以我怀疑内存问题源于我使用的大量png图像(大约80个)。我已经尝试从-imageNamed方法更改为-imageWithContentsOfFile方法,但没有看到任何真正的改进。如果有人能提供任何建议,我会非常感谢,因为我完全卡住了。
发布于 2010-07-19 14:46:44
内存耗尽并不一定意味着内存泄漏。这可能意味着你一次要求的内存太多了。在您的例子中,您可能正在尝试创建太多同时存在的UIImage对象。在没有看到更多代码的情况下,除了尝试找到一种同时使用更少图像的方法之外,没有什么可说的。
发布于 2010-07-19 14:58:33
假设使用imageNamed加载的UIImage在可能的情况下卸载它们的内容,如果它们收到内存警告。这将只留下一个非常小的空UIImage容器。所以我怀疑你还有其他问题。
检查程序中的任何循环,并确保它不会以某种方式泄漏。
发布于 2010-07-19 15:23:50
还要记住,磁盘上的PNG比内存中相应的图像小得多。如果你的PNG很大,你可能只是占用了太多的内存。也许你可以延迟加载图像,使你的内存占用量更小。
https://stackoverflow.com/questions/3278921
复制相似问题