1

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) が正しいイメージを送信していることも信頼しています。

この問題は、アプリの最初のインストール時に発生することがよくあります (おそらく、画像が後でキャッシュされるためです)。

何かご意見は?

4

0 に答える 0