4

画像を含むドキュメント ( Microsoft Word docxファイルなど) をロードする場合、UIWebView はキャッシュ ポリシーに関係なく、メモリ警告を受け取ると常に画像をキャッシュします。

次に、サンプル コード スニペットを示します。

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024
                                              diskCapacity:0
                                              diskPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"URLCache"]];
[NSURLCache setSharedURLCache:sharedCache];

NSURLRequest* req = [NSURLRequest requestWithURL:
                    [NSURL URLWithString:@"http://www.its.swinburne.edu.au/about/projects/templates/TechnicalSpecificationTemplatev1.1-[ProjectName]-[ver]-[YYYYMMDD].docx"] 
                    cachePolicy:NSURLRequestReloadIgnoringCacheData 
                    timeoutInterval:10];

このような状況でメモリ警告が発生すると、アプリのtmpディレクトリに新しいフォルダーが作成され、通常はDiskImageCache-random_suffixという名前が付けられ、開いているドキュメント内のすべての画像がここに保存されます。

UIWebViewが新しいリクエストをロードした後、私が呼び出すと

[sharedCache removeAllCachedResponses];

これらの一時的なイメージは削除されます。

画像のキャッシュを防ぐ唯一の方法は、呼び出すことです

[NSClassFromString(@"WebCache") performSelector:@selector(setDisabled:) withObject:[NSNumber numberWithBool:YES]];

ただし、これはプライベート API を使用することを意味します。

これを達成するための「Appleフレンドリー」な方法はありますか?

4

1 に答える 1

6

WebKitの「文書化されていない」設定を調べた後、私はそれを理解しました。次の設定を使用すると、アプリケーションの存続期間全体にわたって DiskImageCache を無効にすることができます。

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];
[[NSUserDefaults standardUserDefaults] synchronize];
于 2013-05-27T19:41:01.943 に答える