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

Loading GIFs in iOS consumes too much memory

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

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

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

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

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

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

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