为什么在屏幕上绘制图像之前,我不会遇到低记忆问题?
-
04-10-2019 - |
题
我能够在没有任何备忘录警告问题的情况下将200多个UIIMAGE对象加载到NSMutabledictional中。
当我开始在屏幕上显示它们(大约显示10-20张图像之后)时,我会收到低的内存警告和最终的崩溃。
任何人都只显示大约8张图像。
在屏幕上实际绘制UIIMAGE是否需要其他内存?
没有显示内存泄漏,我已经回顾了很多次泄漏的代码。
解决方案
这 文档 说有一个 UIImage
并不一定意味着图像实际上存储在内存中,因为它可以从图像缓存中清除。但是它确实说,如果您尝试绘制它,它将被拉回记忆。也许在警告您有关低内存状况的警告之前,它开始从其图像缓存清除。这解释了您所看到的一切。
其他提示
它很可能最初创建指向图像的链接,此时实际读取的唯一数据是尺寸和图像类型(简而言之),通常不需要其余数据在屏幕上。显示它时,实际图像数据将从filepath下载并根据其图像类型进行解码,然后将其缓存,因此不必再次下载它,缓存需要大量内存,如果您使用double/triple缓冲离屏幕图需要额外的内存。在加载新图像之前,请尝试处置所有图像数据。
不隶属于 StackOverflow