UIImageView+AFNetworking
テーブルビューでリモートサーバーから画像をロードするために使用しています。ただし、場合によっては、間違った画像がキャッシュされます (NSURLCache
だけでなく にもAFImageCache
)。つまり、URL からのキャッシュが別の URL からの応答を返します (両方ともアプリで使用されます)。
私tableView:cellForRowAtIndexPath:
はかなり普通です:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *dict = self.sections[indexPath.section][indexPath.row];
static NSString *CellIdentifier = @"Cell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
UIImage *placeholder = [[UIImage imageNamed:@"shield-flat"] tintedImageWithColor:[UIColor asbestosColor]];
if (dict[@"first_url"] != [NSNull null]) {
NSURLRequest *mandanteReq = [NSMutableURLRequest imageRequestWithURL:[NSURL URLWithString:dict[@"first_url"]]];
[cell.firstImageView setImageWithURLRequest:mandanteReq placeholderImage:placeholder success:NULL failure:NULL];
} else {
cell.firstImageView.image = placeholder;
}
if (dict[@"second_url"] != [NSNull null]) {
NSURLRequest *visitanteReq = [NSMutableURLRequest imageRequestWithURL:[NSURL URLWithString:dict[@"second_url"]]];
[cell.secondImageView setImageWithURLRequest:visitanteReq placeholderImage:placeholder success:NULL failure:NULL];
} else {
cell.secondImageView.image = placeholder;
}
return cell;
}
また、私のカテゴリNSMutableURLRequest
はリクエストの作成に使用されます:
+ (NSMutableURLRequest *)imageRequestWithURL:(NSURL *)url {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.cachePolicy = NSURLRequestUseProtocolCachePolicy;
request.HTTPShouldHandleCookies = NO;
request.HTTPShouldUsePipelining = YES;
request.timeoutInterval = 10;
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];
return request;
}
dict
それが現在のオブジェクトであり、URL も問題ないことはわかっています。また、サーバー (Amazon S3) が正しいイメージを送信していることも信頼しています。
この問題は、アプリの最初のインストール時に発生することがよくあります (おそらく、画像が後でキャッシュされるためです)。
何かご意見は?