0

所以我有一个带有自定义 UITableViewCells 的 UITableView,在我的自定义单元格中我有一个 UIImageView,我在其中使用 AFNetworking 类别来加载图像:

NSString *imageURLString = [[object.image_ valueForKey:@"low_resolution"] valueForKey:@"url"];
    NSURLRequest *imageURLRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30];
    [self.imageView_ setImageWithURLRequest:imageURLRequest andAnimate:YES placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){

    }failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){
        NSLog(@"FAILED");
    }];

问题是,有时当您向下滚动时.. 在触发图像请求之前似乎有很长的延迟。我正在以非常好的连接进行测试。为什么会这样?

我不确定自己是稍后触发图像请求还是稍后才返回响应。但我看到的是,最初当应用程序加载图像时加载正常。当我向下滚动时,所有图像都是白色的。如果我耐心等待 60 秒,它就会加载。

4

1 回答 1

0

一种可能的解释是,当您向下滚动列表时,您会发送大量AFNetworking在后台执行的请求。

当您向下滚动时,发出的请求数量会增加,并且它们可能会以 FIFO 顺序在服务器端提供服务(也可能是服务器在将图像传输到您的应用程序时不会超过给定的带宽),所以当您在看到当前显示的图像之前停止滚动,您必须等待一堆以前的图像加载。

这可以解释为什么你有延迟。我建议将 NSLog 跟踪放在您的成功处理程序中并记录请求 url,这样您就可以看到发生了什么:检查传入图像的流;查看传输每个图像需要多长时间。

一般来说,您尝试做的事情应该没问题,这就是为什么我在考虑由您发送的请求数量触发的服务器端问题。

于 2012-07-18T17:02:57.853 回答