4

AFImageCacheカテゴリでデフォルトで使用されてUIImageView+AFNetworkingいるものを、ディスクベースでもう少し正確に管理できるもの ( NSURLCacheなど)に交換しようとしています。残念ながら、UIImageView+AFNetworkingサブクラスではなくカテゴリであるため、af_sharedImageCache をサブクラスまたは別のカテゴリでオーバーライドすることはできませUIImageView

UIImageView+AFNetworkingほとんどをコピーして自分のサブクラスに貼り付けずに、この機能を実現する他の方法はありますか?

4

2 に答える 2

6

SDWebImageプロジェクトは同様の UIImageView カテゴリを提供しますが、メモリ内 (NSCache を使用) とディスク上 (NSFileManager を使用) の両方のキャッシュを提供します。ディスクにキャッシュする必要がある場合は、それを使用することをお勧めします。

この実装の欠点は、ネットワーク リクエストがAFHTTPClientサブクラスを通過しないことです。そのため、ニーズによっては、独自のオペレーション キューや認証などを実装する必要がある場合があります。基本的な目的でのみ使用する場合は、アバター画像を表形式で表示するのと同じように、問題ないはずです。

その欠点が気になる場合は、SDImageCache(プロジェクトに含まれているSDWebImage) を使用して画像をキャッシュし、AFNetworking を使用して自分でダウンロードするという別のアイデアがあります。

最後に、AFNetworking には のサポートが組み込まれていることに注意してください。AFNetworkingNSURLCacheを作成すると、画像がディスクにキャッシュされます。ただし、イメージ キャッシングは通常、大量のイメージを に表示するために使用され、UIScrollViewスムーズNSURLCacheなスクロールには十分なパフォーマンスが得られません。

于 2013-06-13T22:13:43.247 に答える