私は NSCache の概念を理解しようとしていますが、NSCache インスタンスは、以前に保存したキーに値を返すことを保証していないということです。現時点でパフォーマンスの方が重要であると判断した場合は、キーと値のペアを追加しようとしても保存しない場合があります。
それが意味することは、私にとって次のことです。
- 各キーは、必要に応じて値を生成するのに十分な情報を「保持」する必要があります
- したがって、NSCache の各クエリは、基本的にキーの形式であり、対応する値を生成するために必要なすべての情報をラップする必要があります。
- 上記の 2 つの点から、NSCache は、キーと値の間のあらゆる種類の関連付けを確立する目的には役立たないと言えます。ユーザーはキャッシュとは無関係に値を生成できなければならず、NSCache を使用する唯一の目的はそれではありません。いくつかの値を「検索」するのではなく、メモリを交換してパフォーマンスを向上させるだけです
だから私の問題は、画像の透明マスクを保存することです。最初は、画像の名前をキーとして使用するだけでよいと考えていましたが、上記の推論からすると、それだけでは十分ではないようです。マスクの生成に使用される他のすべてのパラメーター (透明度のしきい値など) も含める必要があります。また、キャッシュにマスクを要求するたびに、すべてのパラメーターを提供する必要があることも意味します。そして、それを行うことについて私が考えることができる唯一の方法は、次のようなものNSInvocation
をキーとして使用することです。しかし、それはかなり不格好な解決策のようです。