画像をキャッシュするための方法がわからず、NSUserDefaultsに保存しまくっていたらメモリ不足でアプリが立ち上がらなくなった。安全なキャッシュの仕方について調べていると結構勉強になったので、その時のメモをまとめました。基本的にはAlamofireImageリポジトリのREADMEを読めばOK。https://github.com/Alamofire/AlamofireImage#image-cachingNSURLCacheiOSデフォルトのキャッシュはこれ。Filtersを適用した結果の画像)をキャッシュすることもできる。プロフィール用の画像をダウンロードしてきた時、オリジナルの画像とそれを加工してサムネイルのサイズとして使いたい場合に、それぞれの画像をキャッシュしておくことができる。NSURLCacheの場合はオリジナルの画像をキャッシュすることしかできない。◯ImageCacheAlamofireImageを利用して画像をキャッシュするときには以下の4つのパラメータを調整することができる。MB)ImageFilterを使わない場合はNSURLCacheのmemoryCapacityを0にするべき。同じ画像がNSURLCacheとImageCacheに重複して保存されてしまうので。Images)取得した画像をURLをindentifierとしてキャッシュする。独自のidentifierを指定することもできる。いちいちidentifierを考えなくていいの、こちらのほうが使い勝手がいいと思う。Purgingキャッシュされている画像にアクセスが有るたびに、画像のlastAccessDateが更新される。キャッシュされているサイズがmemoryCapacity以上になったばあいはサイズがpreferredMemoryCapacityAfterPurge以下になるまでlastAccessDateが古い順にキャッシュから画像が削除される。PrioritizationImageDownloaderが画像をダウンロードするときのキューの管理方法を指定する。Downloadsときどき同じリクエストを複数回実行してしまうらしいが、それをエレガントに解決してくれるらしい。handlersは複数回呼ばれてしまうから気をつけてね。Downloaderを利用して実装されている。URLリクエストを投げる前にキャッシュがあるかどうかを調べてくれる。キャッシュがある場合はリクエストを投げずにその画像を使う。identifierにはURLRequest.URLStringを使っている。filter.identifierを使っている。Images画像を取得するまでの間はこの画像が使用される。画像がキャッシュされていた場合はこの画像は使われない。Filtersfilterがセットされていた場合は画像がダウンロードされた直後にfilter適用される。キャッシュがある場合はそれが返される。Transiotions画像が取得された直後にアニメーションがつく。transisionは無視される。デフォルトのImageDownloaderインスタンスを利用している。キャッシュサイズなどを変更したい場合はImageDownloaderの使い方を参照する。ExtensionsInflationJPGやPNGは圧縮されているので、それを展開する?PNGは可逆圧縮だけど、JPGは非可逆圧縮のはず。FiltersUIImageExtensionのCoreImageFilterと異なる点は、フィルター後の画像をキャッシュすることができること。AlamofireImageで独自に用意されているフィルターの仕組みを利用している。CircleFilterまとめREADMEを読むのは勉強になるなー。コードリーティングの練習にもなったので継続して勉強していきたい。upLoginユーザーは見つかりませんでした。