2016-04-15 5 views
0

私のアプリケーションでは、私は、URLを使用して、いくつかの画像をダウンロードすることだし、(それは内部のImageViewの持つカスタムセルです)cell.imageView[indexPath.row]に入れ。 私は一度に2つのセルを見ることができると私は方法キャッシュのtableViewセルデータ

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomCell { 
} 

は、それがセルが表示されるたびに呼ばれていますことに気づきました。だから、私のアプリはサーバーから画像をダウンロードし続け、アプリの結果は非常に遅くなります。

私はそれは私がすでに見たセルのデータをキャッシュすることが可能ですかどうかを知りたいので、私は私が私のtableViewを上にスクロール場合は、画像を再ダウンロードする必要はありません!コードを話す上記のfuncは、私が既に見たセルではなく、テーブルを下にスクロールした場合にのみ呼び出すようにしたいと思います。

答えて

1

あなたがたがSDWebImageで素敵な人々があなたの画像のURLがちょうどUIImageviewため、このカテゴリを使用してコードを取得して画像を入れ替える管理/フェッチ/ /キャッシュをダウンロードするには、ライブラリを作るので、それは仕事の公平なビットをとり、これはUIImageView.sd_方法を提供することができます。

また細胞で車輪の再発明をしないでくださいprepareForReuse()を実装し、sd_cancel

1

でフェッチキャンセル!
は、可変辞書のように動作しますが、それはスレッドセーフで、NSCacheを見てみましょう。

NSCacheオブジェクトはいくつかの方法で、他の可変のコレクションとは異なります。

NSCacheクラスは、システムのメモリを使用しすぎていないことを確認 様々な自動削除ポリシーを、組み込まれています。メモリは 他のアプリケーションで必要とされている場合 システムが自動的にこれらのポリシーを実行します。これらのポリシーが呼び出されると、キャッシュからいくつかの項目が削除され、メモリフットプリントが最小限に抑えられます。

あなたはキャッシュを自分でロックすることなく、異なる スレッドからキャッシュに追加、削除、およびクエリーアイテムすることができます。

NSMutableDictionaryオブジェクトとは異なり、キャッシュはそれに入れているキー オブジェクトをコピーしません。キャッシュは メモリを解放するために呼び出された場合、自動的にシーン 後ろに非同期的に自分自身を変異させることを決定することができるよう

これらの機能は、NSCacheクラスのために必要です。

画像は、URLと値としてキーを使用して入力できます。
Documentation
NSHipster投稿。