2012-07-18 67 views
0

所以我有一个自定义UITableViewCells和我的自定义单元格内一个UITableView我有,我用AFNetworking类的加载图像一个UIImageView:AFNetworking和UIImageView的更新线程问题

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秒,那么它会加载。

+0

直到图像请求被触发,或者直到请求的图像被传输并且您的成功块被调用? – sergio 2012-07-18 16:41:15

+0

不,它不叫 – xonegirlz 2012-07-18 16:46:43

回答

0

一个可能的解释是,当你向下滚动你的列表时,你发出了很多AFNetworking在后台执行的请求。

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

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

一般而言,您所要做的事情应该没有问题,这就是为什么我在考虑由您发送请求的次数触发的服务器端问题。

+0

仅供参考,服务器是Instagram API的 – xonegirlz 2012-07-18 20:37:53