私自身の質問で私に与えられた答えGCD ブロック内の [NSData dataWithContentsOfURL:URL] の動作を理解することは理にかなっています。したがって、GCD 内で使用する場合[NSData dataWithContentsOfURL:URL]
(最近多くの開発者が行っているように) は良い考えではないことを確認してください。ファイル/画像をダウンロードします。だから私は以下のアプローチに傾いています(どちらも使用できますNSOperationQueue
)。
を使用してイメージをロードし、[NSURLConnection sendAsynchronousRequest:queue:completionHandler:
NSCache を使用して、同じイメージを何度もダウンロードしないようにします。
多くの開発者が示唆しているように、SDWebimageを使用すると、画像ファイルをダウンロードするための上記の戦略が含まれます。コードの作成者によると、必要な数の画像を読み込むことができ、同じ URL が何度もダウンロードされることはありません。
編集:
例[NSURLConnection sendAsynchronousRequest:queue:completionHandler:
NSURL *url = [NSURL URLWithString:@"your_URL"];
NSURLRequest *myUrlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:myUrlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil)
//doSomething With The data
else if (error != nil && error.code == ERROR_CODE_TIMEOUT)
//time out error
else if (error != nil)
//download error
}];