ダウンロードとキャッシュは非常に簡単です。次のコードは、非同期的にダウンロードしてキャッシュします。
NSCache *memoryCache; //assume there is a memoryCache for images or videos
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSString *urlString = @"http://URL";
NSData *downloadedData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
if (downloadedData) {
// STORE IN FILESYSTEM
NSString* cachesDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *file = [cachesDirectory stringByAppendingPathComponent:urlString];
[downloadedData writeToFile:file atomically:YES];
// STORE IN MEMORY
[memoryCache setObject:downloadedData forKey:urlString];
}
// NOW YOU CAN CREATE AN AVASSET OR UIIMAGE FROM THE FILE OR DATA
});
画像の非同期ダウンロードは非常に簡単ですが、SDWebImage のようなライブラリを非常に価値あるものにする UIImages 特有のものがあります。画像を表示するとき、iOS は遅延画像解凍スキームを使用するため、遅延が発生します。これらの画像をtableViewセルに入れると、ジャギースクロールになります。正しい解決策は、バックグラウンドで画像を解凍 (またはデコード) し、解凍した画像をメイン スレッドで表示することです。
遅延画像解凍の詳細については、http: //www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/を参照してください。
私のアドバイスは、画像には SDWebImage を使用し、ビデオには上記のコードを使用することです。