/ objc

UIWebView Cache Clear

UIWebViewのキャッシュクリアが地味に面倒だったのでログ
iOS7系のキャッシュクリアがなんか変だった。詳しく調査してないけどこれでうまくうごいた。

やること1

UIAppcalation method

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

とか絶対呼ばれる場所に下を書いておく

// WebViewのキャッシュを削除
[NSURLCache sharedURLCache].memoryCapacity = 0;
[NSURLCache sharedURLCache].diskCapacity = 0;

やること2

UIWebViewDelegate method

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

この辺のリクエスト前でキャッシュクリアした。

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1) {
    // iOS8系
    /*
     こっちでもキャッシュクリアができた
     [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
     */
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
}
else if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    // iOS7系
    [NSURLCache sharedURLCache].memoryCapacity = 0;
    [NSURLCache sharedURLCache].diskCapacity = 0;
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
}
else {
    // iOS6系
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
}