メモリの警告がある場合は、ディスク上のキャッシュではなく、メモリ内のキャッシュをクリアするだけで済みます。の問題removeAllCachedResponses
は、両方をクリアすることです。私のテストから、これはメモリ内のキャッシュだけをクリアするようです。
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
NSURLCache * const urlCache = [NSURLCache sharedURLCache];
const NSUInteger memoryCapacity = urlCache.memoryCapacity;
urlCache.memoryCapacity = 0;
urlCache.memoryCapacity = memoryCapacity;
}
私の唯一の懸念はスレッドの問題です。この記事の下部に脚注があります。
StackOverflowには、NSURLCacheを再作成してパージすることに関する多くの推奨事項がありますが、キャッシュの再作成中に別のスレッドでリクエストが発生すると、クラッシュが発生することがあります。したがって、アプリの起動時にキャッシュを1回作成し、必要に応じてキャッシュを削除することをお勧めします。
上記のソリューションはキャッシュを再作成しませんが、それでも同じ問題が発生する可能性があるため、これを広範囲にテストしていません。