gpt4 book ai didi

ios - ImageIO_PNG_DATA 在应用程序从后台移动到前台后继续增长

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:43:04 24 4
gpt4 key购买 nike

我有一个应用程序,我在其中使用了大量图像,但我发现应用程序内存占用存在异常问题。我正在使用 imageNamed 方法来初始化 UIImage 对象。从文档中我读到 imageNamed 将内存保存在缓存中并且不会每次都重新加载图像。这对我有用,因为我的应用程序仅基于图像,但在我的情况下,似乎每次我的应用程序从 background 移动到 foreground 时,图像都会再次加载。我觉得这是因为当我在每一代中对应用程序进行内存分析时,每当我从后台移动到前台时,消耗的内存量在 VM:ImageIO_PNG_DATA 中急剧增加,最终我的应用程序崩溃了,因为它消耗了更多超过 600 MB。在某些地方,我读到我们应该使用 imageWithContentsOfFile 来避免这个问题,但我不确定这是否是正确的方法。

请就此指导我。

最佳答案

docs说:“如果你有一个只显示一次的图像文件,并希望确保它不会被添加到系统的缓存中,你应该改为使用 imageWithContentsOfFile: 创建你的图像。这将保留您的一次性图像从系统图像缓存中取出,可能会改善应用程序的内存使用特性。”
因此,如果您的图片未被重复使用,您应该使用 imageWithContentsOfFile: 而不是 imageNamed:

还有一点就是这两种方法都会创建自动释放对象。即使不再使用这些对象,它们也只会在自动释放池耗尽时从内存中删除。如果您没有设置自己的自动释放池,它可能很少被耗尽。如果您使用像

这样的 block 设置自己的自动释放池,您可能会使用更少的内存
@autoreleasepool {
// Your code here
} // @autoreleasepool

关于ios - ImageIO_PNG_DATA 在应用程序从后台移动到前台后继续增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23868754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com