Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone sdwebImage setImageWithURL:占位符图像:已完成:_Iphone_Sdwebimage - Fatal编程技术网

Iphone sdwebImage setImageWithURL:占位符图像:已完成:

Iphone sdwebImage setImageWithURL:占位符图像:已完成:,iphone,sdwebimage,Iphone,Sdwebimage,我使用SDWebImage新版本并调用: self.imgIndicatorView.center=self.img.center; self.imgIndicatorView.hidden=NO; [ self.imgIndicatorView startAnimating]; __block UIActivityIndicatorView *indicatorView= self.imgIndicatorView; NSLog(@"myTopics

我使用SDWebImage新版本并调用:

    self.imgIndicatorView.center=self.img.center;
    self.imgIndicatorView.hidden=NO;
    [ self.imgIndicatorView startAnimating];
    __block UIActivityIndicatorView *indicatorView= self.imgIndicatorView;

     NSLog(@"myTopics.img.small=%@",myTopics.img.small);
    [self.img setImageWithURL:[NSURL URLWithString:@"http://ww1.sinaimg.cn/thumbnail/acc940bdj.jpg"]
                           placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){

                                NSLog(@"newImageNotCached:break.png  myTopics.img.small" );
                               if(!error ){

                                   CGRect  sFrame=self.img.frame;

                                   CGSize newSize=image.size;

                                   if (newSize.height>80) {

                                       if (newSize.width>newSize.height) {
                                           newSize.height=newSize.height *80.0/image.size.width;
                                           newSize.width=80;
                                       }else{
                                           newSize.height=80;
                                           newSize.width=newSize.width*80.0/image.size.height;

                                       }


                                   }else{
                                       if (newSize.width>80) {
                                           newSize.height=newSize.height *80.0/image.size.width;
                                           newSize.width=80;
                                       }else{

                                       }

                                   }
                                   sFrame.size=newSize;
                                   self.img.frame=sFrame;

                                   indicatorView.hidden=YES;
                                   [indicatorView stopAnimating];
                                   [indicatorView removeFromSuperview];
                               }else{

                                   self.img.image=[UIImage newImageNotCached:@"break.png"];

                                   indicatorView.hidden=YES;
                                   [indicatorView stopAnimating];
                                   [indicatorView removeFromSuperview];
                               }


                           }];

但有时日志NSLog(@“newImageNotCached:break.png myTopics.img.small”)不会显示url(@”)是否为break。因此指示符视图始终存在。为什么该方法不调用已完成的块?

中。UIImageView+WebCache.m第55行

   if (url)
{
    __weak UIImageView *wself = self;
    id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
    {
        __strong UIImageView *sself = wself;
        if (!sself) return;
        if (image)
        {
            sself.image = image;
            [sself setNeedsLayout];
        }
        if (completedBlock && finished)  // NOTE: finished == YES, the completedBlock could be called.

        {
            completedBlock(image, error, cacheType);
        }
    }];
    objc_setAssociatedObject(self, &operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
因此,您编写的completedBlock将仅在第一次(发生错误时)调用

 if (!url || !completedBlock || (!(options & SDWebImageRetryFailed) && [self.failedURLs containsObject:url])) // NOTE: failedURLs contain the url
{
    // TIPS:  ERROR OCCURED,  DO NOTHING
    if (completedBlock) {
        // NOTE: finished flag was NO. Please set it as YES, And try again.
        completedBlock(nil, nil, SDImageCacheTypeNone, NO); 
    }
    return operation;
}