2013年2月15日金曜日

NSURLConnectionはキャッシュに注意

NSURLConnectionによるダウンロードのコードは簡単に見つかると思うが、実装にはキャッシュの注意が必要。

NSURL *url = [NSURL URLWithString:@"ダウンロードしたいファイルのURL"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
NSURLConnection *conn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease];

こんな感じだと思うが、この場合、NSURLRequestUseProtocolCachePolicyの指定となるためキャッシュが効いて、必ずしも最新情報が得られない。それどころかネットに繋がってなくてもダウンロードが正常終了するので要注意。

NSURLRequestの作成を以下にすればキャッシュをクリアして実際にダウンロードを行う。

NSURLRequest *req = [NSURLRequest requestWithURL:url
 cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
timeoutInterval:60.0];

0 件のコメント:

コメントを投稿