SDWebImageDownloader报告"不兼容的块类型"错误

时间:2014-03-30 14:21:00

标签: objective-c sdwebimage

当我使用以下代码添加SDWebImage时:

[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:imageUrl options:0   progress:^(NSUInteger receivedSize, NSInteger expectedSize) {

} completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
    if (image && finished) {
        iconimage.image = image;
    }
}];

它会在行显示错误信息:

[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:imageUrl options:0 progress:^(NSUInteger receivedSize, NSInteger expectedSize)

错误说:

  

'void(^) (NSUInteger, NSInteger)'发送到类型为'SDWebImageDownloaderProgressBlock'的参数(又名'void(^)(NSUInteger, NSUInteger)')的不兼容的块类型

我正在使用SDWebImage的3.6版本。

1 个答案:

答案 0 :(得分:4)

我刚检查了current SDWebImage sourceSDWebImageDownloaderProgressBlock似乎带了两个NSInteger参数(注意,不是NSUInteger):

typedef void(^SDWebImageDownloaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize);

您目前正在NSUInteger参数使用receivedSizeNSInteger使用expectedSize。如果上述typedef正确无误,则应使用NSInteger

话虽如此,但您提供了一条错误消息,表明您当前的SDWebImage副本正在寻找两个NSUInteger参数。也许您正在使用SDWebImage的不同版本/分支;也许只是在您输入问题中的错误消息时输入错误。无论如何,如果您的错误消息确实表明它预期有两个NSUInteger参数,那么您应该使用它。

最重要的是,您应该确保progress downloadImageWithURL块的各个参数与SDWebImageDownloaderProgressBlock中的SDWebImageDownloader.h的定义完全匹配。