【问题标题】:ios swift - unreleased memory when appending uiimage to arrayios swift - 将uiimage附加到数组时未释放的内存
【发布时间】:2016-03-20 15:19:51
【问题描述】:

我将核心数据中的 uiimage 附加到一个数组中,以便创建它们的 gif。

我正在创建 gif,然后清空数组;但是,从我创建 gif 的那一刻起,我仍然有无限的 50 mb 内存分配。

我尝试查看乐器,这就是我在调用树中得到的结果:

Call tree image

这是代码:

     do{
            let objects = try managedObjectContext.executeFetchRequest(request)

            let results = objects

            if results.count > 0 {
                for var i = 0; i < results.count; i += 1{
                    let match = results[i] as! cFW
                    date.append(match.date)
                    let image = match.image
                    fetchedImage.append(UIImage(data: image)!)
                }
            } else {

            }
        }
        catch{}

即使在删除 gif 并且数组已经被删除后,应用程序仍保持 50mb 的内存使用量。

谢谢

编辑:我遇到的问题与我如何显示 gif(在 web 视图中)有关。我会尽快用我的解决方案更新问题

【问题讨论】:

  • 那么您是否曾经删除过 fetchedImage 中的所有内容?你什么时候删除它
  • 在创建 gif 之后。经过进一步调查,在另一个网站上发现有人有类似问题的帖子:“使用 Instruments 对此进行了更多研究,并注意到 VM: ImageIO_GIF_Data 在 GIF 中的每一帧都被调用一次。我还注意到每次调用时分配的内存等于 GIF 的大小,这意味着当您将 UIImage 的动画实例分配给 UIImageView 时,iOS 正在为其中的每一帧重新分配整个图像。”
  • 如果您在 web 视图中查看图像可能只是 web 视图缓存

标签: ios memory


【解决方案1】:

由于在 web 视图中显示 gif 而发生此问题。

清除网页视图的缓存并没有解决内存分配问题。

我最终使用 FLAnimatedImage 库来展示我的 GIF。

没有更多未释放的内存。

谢谢大家

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2023-03-13
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多