2017-02-06 26 views
2

GIFファイルをSwiftプロジェクトに読み込むために、多くのオープンソースのアニメーションGIFライブラリをテストしました。iOSでGIFを読み込んでもメモリが多すぎる

これらのほとんどは、ライブラリーのであると主張していますが、アニメーションgifをロードするたびにアプリケーションで約8MBのメモリが使用されます。

この専用メモリスペースは決して解放されないようです。我々は、それが直線的に成長して見ることができます:

enter image description here

そして、それは私がここで正しいことをやっているなら、私は思ってしまいます。この動作は正しいのでしょうか、またはユーザーにとって潜在的に悪いですか?

+0

これはシミュレータまたは実際のデバイスで発生していますか? – Pierce

+0

また、どのサードパーティライブラリを使用していますか? – Pierce

+0

@Pierceこれは実際のデバイスから来ています。私は既にGIFU、SwiftyGifなどを試していたので、これは一般的な動作のようです。 – Machado

答えて

4

メモリから消去するには、GIFイメージを手動で削除する必要があります。

例:あなたがする必要があります:あなたは、デリゲートを割り当てる必要があったならば、あなたも

self.gifViewer.Delegate = nil 

ノートを追加することができます gifViwerが

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

この例では、あなたのGIFビューアことができますviewControlerが完全にアンロードされているときに実行します。これは、アプリケーションが削除されている間にビュー内でgifViewerを探し始めるためです。ビューをアンロードせずにメモリからGIFイメージを消去する必要がある場合は、上記の手順を使用して、プログラムによってスーパービューにビューを追加することをお勧めします。これはインターフェイスデザイナーとIBOutletsでは動作しません。

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

スーパービューからの削除で十分です。オブジェクトはメモリから解放されていませんでした(なぜ私は強制する必要があるのか​​わかりません)。 – Machado

+0

オブジェクトが本当に高くなり、 'didReceiveMemoryWarning'が@Machadoと呼ばれる場合、オブジェクトはメモリから解放されます。 – Mentos

+0

@Mentosありがとうございます。しかしこれは、閉じる前にすべてのビューを削除するメソッドを起動するDialog内でインスタンス化されています。だから、私はそれが奇妙なことを発見したのです。 – Machado

関連する問題