あなたがやろうとしていることには名前があり、それはcachingです。
AFNetworking
公式のFAQに従ってすでに実装しています
AFNetworking にはキャッシュ メカニズムが組み込まれていますか?
AFNetworking
NSURLCache
およびそのサブクラスによってすでに提供されているキャッシング機能を利用します。NSURLRequest
オブジェクトに正しいキャッシュ ポリシーがあり、サーバーの応答に有効な Cache-Control ヘッダーが含まれている限り、応答は後続の要求のために自動的にキャッシュされます。
次のようにキャッシュを設定すると、問題ありません
- (void)setupCache {
NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*4 // 1MB mem cache
diskCapacity:1024*1024*5 // 5MB disk cache
diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];
}
次に、通常どおりリクエストを実行するだけで、リソースがキャッシュにある場合はキャッシュ ヒットが発生し、リソースを 2 回ダウンロードすることはありません。
以下のものをサポートする必要がある場合は、次iOS5
のような代替 URL キャッシュを使用し、SDURLCache
次のように設定する必要があることに注意してください。
- (void)setupCache {
SDURLCache *urlCache = [[SDURLCache alloc] initWithMemoryCapacity:1024*1024 // 1MB mem cache
diskCapacity:1024*1024*5 // 5MB disk cache
diskPath:[SDURLCache defaultCachePath]];
[NSURLCache setSharedURLCache:urlCache];
}
その理由はこの記事でよく説明されていますが、次の引用で要約できます。
iOS5 より前NSURLCache
は、ドキュメンテーションに別の記載があったとしても、リクエストをメモリに保存するだけでした - diskCapacity プロパティは黙って無視されていました