【问题标题】:Caching locally created images on iOS for fast reuse在 iOS 上缓存本地创建的图像以便快速重用
【发布时间】:2013-05-28 17:13:50
【问题描述】:

我的应用程序中有一个方法可以使用特定颜色构建 UIImages。由于很可能会多次创建相同颜色的图像,因此我想缓存该UIImage,然后在需要该特定颜色时使用缓存版本而不是构建新版本。

这不是缓存来自网络的远程图像,这些是本地创建的图像。

最好的方法是什么?从磁盘还是只是将UIImage 对象保存到NSDictionaryNSCache 呢?

** 我不希望为此使用库。寻找一个简单的解决方案。

【问题讨论】:

    标签: ios objective-c cocoa-touch uiimage nscache


    【解决方案1】:

    这取决于您拥有多少张图片以及每张图片的使用频率和并发度。

    如果您有一组经常使用的图像,那么NSDictionary 是一个不错的选择,因为它将所有图像都保存在内存中。如果确实收到内存警告,您可以随时删除所有图像,然后在需要时重新生成它们。

    当您在代码中生成图像时,似乎缓存到磁盘不会那么有用,但这取决于图像的复杂程度。同样NSDictionary 可用于内存缓存,如果字典中没有任何内容,则失败输出到磁盘,如果其他所有方法都失败,则重新创建。

    NSCache 路由为您提供了一些多线程优势(如果您使用它们),但通常类似于NSDictionary 路由。由于内存管理是为您处理的,因此您的控制权要少一些,因此缓存可能会比您明确管理它时更频繁地决定销毁您的某些图像。

    无论如何,您只需要在当前代码之上添加几行代码。

    【讨论】:

    • 我不介意操作系统为我处理内存问题,所以我认为NSCache 是个好主意...
    猜你喜欢
    • 1970-01-01
    • 2019-06-19
    • 2014-09-11
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多