有關UIImageView+AFNetworking 下載圖片的線程問題

今天寫了一個demo,從服務器獲取圖片,而後顯示在cell上,你們都知道cell的重用機制,當往下拉的時候,上面的cell遮住了,下面的cell就會重用被遮住的cell,緩存

貼代碼:服務器

 NSString *urlstring=[dict objectForKey:@"imagePath"];
    NSURL *url=[NSURL URLWithString:urlstring];//獲取圖片的url路徑
    NSURLRequest *urlrequest=[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];
    NSLog(@"UI Thread is %@",[NSThread currentThread]);//這裏是主線程 //使用UIImageView+AFNetWorking 異步下載圖片,緩存到本地
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
         NSLog(@"current Thread :%@",[NSThread currentThread]);//這裏使用異步機制,確定是非UI線程
        [cell.myImage setImageWithURLRequest:urlrequest
                            placeholderImage:[UIImage imageNamed:[dict objectForKey:@"imageName"]]
                                     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
            NSLog(@"load image thread is %@",[NSThread currentThread]);//猜猜這裏是什麼線程??
            dispatch_async(dispatch_get_main_queue(), ^{
                cell.myImage.image=image;
                 NSLog(@"image thread :%@",[NSThread currentThread]);//這裏確定是主線程
            });
           
            NSLog(@"下載圖片成功");
        } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
            NSLog(@"圖片加載失敗:%@",error);
        }];

剛學AFNetworking 的時候,不知道看了誰的博文,說異步

setImageWithURLRequest:urlrequest 這個方法是異步機制,好吧,我認可當時單純了,直到今天我寫這個demo的時候,發現若是不是用異步機制,下載的圖片很是慢,有時候還會超時,滑動cell的時候會很是卡,而後我就打印線程,看看是否是在主線程下載東西了,打印結果:


看,
setImageWithURLRequest:urlrequest 這個方法中打印的線程居然是主線程,反正我驚訝了!!
相關文章
相關標籤/搜索