【问题标题】:Best Practice to Hold UIImage's in NSMutableArray在 NSMutableArray 中保存 UIImage 的最佳实践
【发布时间】:2013-03-28 05:51:12
【问题描述】:

我有很多 UIImage 需要在某个特定操作期间保存在内存中。

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

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

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

【问题讨论】:

  • 为什么需要将它们转换为 NSData?
  • 为什么要全部转换?仅将 UIImage 存储在数组中有什么问题?
  • 为什么不将数据路径保存到数组中,并在需要时调用数据?
  • @Tim 我转换为 NSData 因为它似乎更好地处理数组中的大量图像而不是 UIImage 对象。我想我是通过在线研究发现的,但这可能是错误的。
  • @JustinAmberson 你能确认没有区别吗?

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


【解决方案1】:

你会发现如果直接存储 UIImage 可以在崩溃前在数组中存储更多的图片。从 NSData 到 UIImage 再转换回来会消耗内存。

但是,您的内存仍然有限。如果这些图像的大小可以改变,那么在崩溃之前您可以在数组中拥有的数量将是未知的。如果是这种情况,可能是时候开始考虑将数据缓存到 tmp 文件夹了。

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

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 2010-10-18
    • 2015-12-02
    • 2017-01-26
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多