アプリデリゲートで作成および保存されるARCとNSCacheを使用しています。次に、アプリ デリゲートを介してコントローラーから呼び出します。NSCache は、URL から読み込まれた画像を保存し、メモリ使用量が急速に増加します。プロファイラーで実際のメモリ使用量を確認すると、アプリのメモリ使用量は 320 MB にも達しますが、割り当てでは 20 ~ 30 MB しか割り当てられていないと表示されます。
アプリのデリゲートで、キャッシュを次のように設定します (これは ivar です)。
cache = [[NSCache alloc] init];
[cache setCountLimit:100];
[cache setTotalCostLimit:1500000];
[cache setEvictsObjectsWithDiscardedContent:YES];
NSCache を試すためのボタンを実装しました。クリックすると次のように呼び出されます。
- (IBAction)eraseCache:(id)sender {
[[appDelegate cache] removeAllObjects];
}
プロファイラーでは、使用されるメモリは減りませんが、実際に画像の取得が再開されるため、オブジェクトが削除された場所がわかります。ARCを使用して、このメモリ使用量を自由に解放するにはどうすればよいですか? キャッシュのサイズを取得して、いつ解放するかを知るにはどうすればよいですか?