在NSMutableArray中保留UIImage的最佳实践

时间:2013-04-05 17:50:04

标签: iphone ios objective-c memory-management uiimageview

在一个特定的动作中,我需要在记忆中保留很多UIImage

我设法保存图片的最佳方式是将它们转换为NSData并存储在NSMutableArray中。稍后我会遍历数组并再次将NSData转换为UIImage个对象以重用每个图像(我真的将它们合并为一个整体)。

但是,如果阵列中有10个或更多图像,我的应用程序崩溃了。将它们保存到硬盘驱动器而不是NSMutableArray将为用户增加大量处理时间。

动态处理大量图像的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

如果直接存储UIImage,您会发现在崩溃之前可以在阵列中存储更多图像。从NSData转换为UIImage并返回它需要花费内存。

但是,你的内存仍然有限。如果这些图像的大小发生变化,那么在崩溃之前阵列中可以包含的数字将是未知的。如果是这种情况,可能是时候开始考虑将数据缓存到tmp文件夹了。

无论如何,最佳做法是直接在数组中保存对象的引用,而不是将它们转换为NSData。存储直接引用还允许引用计数发挥其神奇作用,通常需要较少的内存中的数据复制,减少内存占用并提高性能。