2011-01-21 10 views
3

NSURLRequest、NSURLConnection、およびNSURLRequestReturnCacheDataElseLoadポリシーを使用してイメージのキャッシュを実装するサンプルコードがありますか?NSURLRequest、NSURLConnection、NSURLRequestReturnCacheDataElseLoadポリシーの実装

次のコードを使用していますが、キャッシングが発生していないようです。私はいつもURLから画像を取得しています。

NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://i54.tinypic.com/10pd2jk.png"]]; 
    NSData *data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil]; 
    NSLog(@"Received %d bytes", [data length]); 
    [req setCachePolicy:NSURLRequestReturnCacheDataElseLoad]; 
    data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil]; 
    NSLog(@"Received %d bytes", [data length]); 
    [[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10]; 


    UIImage *myImage = [UIImage imageWithData:data]; 
    UIImageView *sd = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)]; 
    sd.image = myImage; 
    [self.view addSubview:sd]; 
+0

を試してみてください私もこれと同じ問題を抱えています。 SDURLCacheは方法のように思えますが、ドキュメントで提供されているサンプルのコードスニペットは理想的にはより完全です。私もキャッシングを観察していません。私のビューをロードするとき、私は[self getImage]と言っています。私は、SDURLCacheを使用することで、他に何もする必要がないと仮定しています。または、手動で「最後に変更した」時刻を保持してから、共有キャッシュから読み取る必要がありますか?もしそうなら、私は手動でキャッシュを実装することになったので、時間を節約することができます。 – user798719

答えて

5

あなたはSDURLCacheを使用して見てみましょうすることをお勧めします:NSURLCacheがないのに対し、https://github.com/rs/SDURLCache

SDURLCacheは、実際に、ディスクにキャッシュを保存し、ここで間違っているものを私に教えてください。 NSURLCacheはメモリ内にのみキャッシュするため、アプリケーションセッション内でキャッシュします。詳しくはリンク先のReadMeを参照してください。

更新: NSURLCacheはディスクにキャッシュを行うようのiOS 5.xのため、ルックス:http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

+0

なぜ私はdownvoteを得たか分かりません。 SDURLCacheは実際にキャッシュをディスクに保存しますが、NSURLCacheはキャッシュを保存しません。 NSURLCacheはメモリ内にのみキャッシュするため、アプリケーションセッション内でキャッシュします。 (私は最近これを確認していないが、私はまだそうだと確信している) –

+0

downvoteは私のものだった。 NSURLCacheを使ってサンプルコードを探していました。 SDURLCacheはMonoを使用しているため私にはあまり役に立ちません。しかしあなたのコメントは、なぜNSURLCacheがどちらの方法でも役に立たない理由を完全に説明しています。答えにそれを含めると、私は下線を削除することができます。申し訳ありません、私は以前コメントしていない、私は少し時間が急いでいた:) –

関連する問題