【问题标题】:uiimage allocation problemuiimage分配问题
【发布时间】:2011-01-08 00:19:46
【问题描述】:

我在 UIScrollView 中有 3 个 UIImage,我正在通过以下方式初始化这些图像:

UIImage *dimage = [[UIImage alloc] initWithData:data];

其中 data 是从 url 请求中获取的 NSdata。在此之后,我正在缓存图像。 当我检查内存分配时,3 个图像每个占用 472 Kb,并且 CoreGraphics 库中的“img_data_lock”已请求分配。 当我在磁盘缓存上检查该图像的大小时,每个大小为 230Kb。

我不知道它怎么能占用更多空间。我希望我的问题很清楚。

【问题讨论】:

    标签: iphone memory uiimageview uiimage


    【解决方案1】:

    不确定您正在查看的“磁盘缓存”是什么,但内存和磁盘使用情况只是微弱相关。用于创建 UIImage 的数据只是对象实际使用的数据的一部分。这意味着活动对象将使用比创建它的数据更多的内存。

    更复杂的是,UIImage 会在内存不足的情况下清除自身的图像数据,因此 UIImage 对象的大小在其存在过程中会发生很大变化。

    【讨论】:

    • 感谢 TechZen,磁盘缓存是指设备上的“/Library/Cache”文件夹,我将其用于临时缓存。
      所以我无能为力。
    • 我认为你没有问题。磁盘上的数据大小与内存中对象的大小之间几乎没有相关性。 UIImage 对象将始终大于数据,除非它清除数据。请记住,数据不是 UIImage 对象本身,而只是其中的一部分。 UIImage 对象必须存储除原始数据之外的其他信息。其他信息使它比数据更大。
    • 感谢 TechZen,我只是关心内存,当移动到这个特定视图时内存增加了 1MB,所以它吸引了我的注意力。所以现在我在滚动视图中一次只保留 3 张图像只是为了节省内存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多