diff --git a/SDWebImage/SDWebImageDownloaderOperation.m b/SDWebImage/SDWebImageDownloaderOperation.m index 7996b16..f317a0f 100644 --- a/SDWebImage/SDWebImageDownloaderOperation.m +++ b/SDWebImage/SDWebImageDownloaderOperation.m @@ -146,12 +146,17 @@ { dispatch_async(self.queue, ^ { - self.expectedSize = response.expectedContentLength > 0 ? (NSUInteger)response.expectedContentLength : 0; - self.imageData = [NSMutableData.alloc initWithCapacity:self.expectedSize]; - if (self.progressBlock) + NSUInteger expected = response.expectedContentLength > 0 ? (NSUInteger)response.expectedContentLength : 0; + self.imageData = [NSMutableData.alloc initWithCapacity:expected]; + self.expectedSize = expected; + + dispatch_async(dispatch_get_main_queue(), ^ { - self.progressBlock(0, self.expectedSize); - } + if (self.progressBlock) + { + self.progressBlock(0, expected); + } + }); }); } else @@ -238,10 +243,13 @@ CFRelease(imageSource); } - if (self.progressBlock) + dispatch_async(dispatch_get_main_queue(), ^ { - self.progressBlock(self.imageData.length, self.expectedSize); - } + if (self.progressBlock) + { + self.progressBlock(self.imageData.length, self.expectedSize); + } + }); }); } diff --git a/SDWebImage/SDWebImageManager.m b/SDWebImage/SDWebImageManager.m index 314067f..380ea19 100644 --- a/SDWebImage/SDWebImageManager.m +++ b/SDWebImage/SDWebImageManager.m @@ -97,14 +97,7 @@ SDWebImageDownloaderOptions downloaderOptions = 0; if (options & SDWebImageLowPriority) downloaderOptions |= SDWebImageDownloaderLowPriority; if (options & SDWebImageProgressiveDownload) downloaderOptions |= SDWebImageDownloaderProgressiveDownload; - __block id subOperation = [self.imageDownloader downloadImageWithURL:url options:downloaderOptions progress:^(NSUInteger receivedSize, long long expectedSize) - { - dispatch_async(dispatch_get_main_queue(), ^ - { - progressBlock(receivedSize, expectedSize); - }); - } - completed:^(UIImage *downloadedImage, NSData *data, NSError *error, BOOL finished) + __block id subOperation = [self.imageDownloader downloadImageWithURL:url options:downloaderOptions progress:progressBlock completed:^(UIImage *downloadedImage, NSData *data, NSError *error, BOOL finished) { dispatch_async(dispatch_get_main_queue(), ^ {