在 iOS 中加载 GIF 占用太多内存

Mac*_*ado 6 memory animated-gif ios swift

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

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

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

在此处输入图片说明

这让我怀疑我在这里做的是否正确。这种行为是正确的,还是可能对用户不利?

Men*_*tos 5

您需要手动删除 Gif 图像才能将它们从内存中清除。

示例:在此示例中,gifViwer 可以作为您的 Gif 查看器

self.gifViewer.removeFromSuperview()
self.gifViewer = nil
Run Code Online (Sandbox Code Playgroud)

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

self.gifViewer.Delegate = nil
Run Code Online (Sandbox Code Playgroud)

注意:您需要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
Run Code Online (Sandbox Code Playgroud)