【发布时间】:2016-03-20 15:19:51
【问题描述】:
我将核心数据中的 uiimage 附加到一个数组中,以便创建它们的 gif。
我正在创建 gif,然后清空数组;但是,从我创建 gif 的那一刻起,我仍然有无限的 50 mb 内存分配。
我尝试查看乐器,这就是我在调用树中得到的结果:
这是代码:
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 视图缓存