2012-07-18 71 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