2011-06-22 4 views
13

誰かがNSCacheを使用する必要があるときに簡単に説明できますか?私はドキュメンテーションを読んで、私はそれを取得しません。同様に、NSCacheが役立つシナリオの例を教えてください。おかげさまで (ドキュメントで述べたように)NSCacheとは何ですか?

+0

なぜお尋ねしますか?あなたはそれを何のために使いたいですか?何を見ていたのですか?要するに、あなたが解決しようとしている問題は何ですか? –

+1

docsのクラスのリストをブラウズしていました。興味深いものを見つけました...特に理由はありません。 – sumderungHAY

答えて

16

これは、以下の追加のもので、多かれ少なかれ、単に辞書のようなものです:

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

キャッシュをロックすることなく、異なる スレッドからキャッシュ内のアイテムを追加、削除、およびクエリできます。

NSCacheオブジェクトから何かを取得すると、自動再生された 結果が返されます。

NSMutableDictionaryオブジェクトとは異なり、キャッシュには、入れられたキー オブジェクトのキーはコピーされません。

アプリケーションで作業する必要のあるデータがたくさんありますが、メモリ内にすべて保持することはできません。たとえば、SQL LiteデータベースやWebサービスからデータを取得したアプリを持っていたら、それを探し出してNSCacheに保存することができます。その後、再度必要になったときは、まずキャッシュを確認し、キャッシュにない場合はデータベースをヒットする必要があります。このシナリオでの標準的な辞書の使用の主な利点は、キャッシュに余分なものを置いてメモリをいっぱいにすると自動的にメモリを解放してメモリを解放するということです。

+0

ありがとうございます。今ははっきりしています。 – sumderungHAY

+0

これは、キーをコピーしないということは非常に興味深いことです。キーが設定された後、キーのアドレスやハッシュを比較したり、おそらくはまだハッシュです。私はこれをどこで使うことができるか考える必要があります。非NSCopying準拠キーを使用する以外。 –

+1

面白いのは、ローカルのSQLデータベースから27kのエントリを取得し、NSCacheを使用して5秒間ではなく2秒未満で済むことです。ありがとうございました – Eugene

関連する問題