在iOS中加载GIF会消耗太多内存

时间:2017-02-06 18:36:27

标签: ios swift memory animated-gif

我一直在测试很多开源动画gif库,以便将GIF个文件加载到我们的Swift项目中。

他们中的大多数声称是高性能库,但是,每当我加载动画gif时,我的应用程序使用大约8MB的内存。

问题是这个专用内存空间似乎永远不会被释放。我们可以看到它呈线性增长:

enter image description here

这让我想知道我是否在这里做正确的事。这种行为是正确的,还是对用户可能有害?

1 个答案:

答案 0 :(得分:4)

您需要手动删除Gif图像,以便从内存中清除它们。

示例: gifViwer可以是此示例中的Gif Viewer

self.gifViewer.removeFromSuperview()
self.gifViewer = nil

如果你必须分配一个委托,那么你也可以添加

self.gifViewer.Delegate = nil

注意:您需要在完全卸载viewControler时运行此功能,因为应用会在视图移除时开始在视图中查找gifViewer。如果你需要从内存中清除gif图像而不卸载视图,那么我建议使用上面的步骤,然后以编程方式将视图添加到superView。这不适用于界面设计师和IBOutlets

let gifViewer = yourGifViewerClass(frame: CGRect(x: 20, y: 20, width: self.view / 2, height: self.view / 2))
    //  setup your gifViewer