当我使用以下代码添加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版本。
答案 0 :(得分:4)
我刚检查了current SDWebImage source,SDWebImageDownloaderProgressBlock
似乎带了两个NSInteger
参数(注意,不是NSUInteger
):
typedef void(^SDWebImageDownloaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize);
您目前正在NSUInteger
参数使用receivedSize
,NSInteger
使用expectedSize
。如果上述typedef
正确无误,则应使用NSInteger
。
话虽如此,但您提供了一条错误消息,表明您当前的SDWebImage副本正在寻找两个NSUInteger
参数。也许您正在使用SDWebImage的不同版本/分支;也许只是在您输入问题中的错误消息时输入错误。无论如何,如果您的错误消息确实表明它预期有两个NSUInteger
参数,那么您应该使用它。
最重要的是,您应该确保progress
downloadImageWithURL
块的各个参数与SDWebImageDownloaderProgressBlock
中的SDWebImageDownloader.h
的定义完全匹配。