See all tickets marked for the 5.0.0 release
SDAnimatedImageView and SDAnimatedImage for full stack solution of animated images.UIImage/NSImageSDImageLoadersManager.SDImageCachesManager.NS_TYPED_ENUM and NS_STRING_ENUM for better generated APIs.Check 5.0 migration guide for the migration from 4.x to 5.x.
See all tickets marked for the 4.0.0 release Versions 4.0.0-beta and 4.0.0-beta 2 list all the changes.
See all tickets marked for the 5.0.0-beta6 release
See all tickets marked for the 4.4.6 release
CGColorSpaceCreateWithICCProfile does not copy the ICC data pointer #2621See all tickets marked for the 5.0.0-beta5 release
See all tickets marked for the 4.4.5 release
See all tickets marked for the 5.0.0 release
Behavior:
Swift Only:
sd_imageDataAsFormat: #2517You can always check 5.0 migration guide for the latest information for these changes.
See all tickets marked for the 5.0.0 release
SDWebImageDownloader #2415 #2437 1d8454dSDImageFormatHEIF represent mif1 && msf1 brands #2423 (imported from 4.4.3)HTTP User-Agent for specific system #2409 (imported from 4.4.3)valueForKey with objectForKey when access NSDictionary #2399sd_setAnimationImagesWithURLs API, because its cause ambiguity, behave not consistently and have rare use case #2459SDAnimatedImage protocol with initWithData:scale:options: #2453SDSetImageBlock (added cacheType and imageURL) #2449NS_TYPED_ENUM on SDImageFormat cause the existing Swift API (sd_UTTypeFromImageFormat) naming changed #2413SDAnimatedImageView #2435SDWebImageContextCacheKeyFilter wrongly be used as cache serializer and cause crash #2451See all tickets marked for the 5.0.0 release
SDImageCoderWebImageContext coder option, which allow custom coder plugin, to receive the context option from top-level API #2405sd_imageLoadOperationForKey #2389__bridge_transfer with __bridge when convert from CFStringRef to NSString #2392sd_UTTypeFromSDImageFormat to sd_UTTypeFromImageFormat #2395SDImageFormat to use NS_TYPED_EXTENSIBLE_ENUM instead of fixed enum, to allow custom coder plugins to extend it #2400See all tickets marked for the 4.4.4 release
shouldDecompressImages config and always do pre-draw for static WebP images #2592DEFINES_MODULE #2549See all tickets marked for the 4.4.3 release
FLAnimatedImage, because of the FLAnimatedImage initializer method blocks the main queue #24416c6d848testFLAnimatedImageViewSetImageWithURL because of remote resource is not available #2450HTTP User-Agent for specific system #2409SDImageFormatHEIF represent mif1 && msf1 brands #2423addProgressCallback, add createDownloaderOperationWithUrl #2336FLAnimatedImageView firstly show one EXIF rotation JPEG UIImage, later animated GIF FLAnimatedImage will also be rotated #2406SDWebImageDownloaderOperation with NSOperation<SDWebImageDownloaderOperationInterface> to make generic #2397optimalFrameCacheSize && predrawingEnabled #2543f9d05d9README.md #2511See all tickets marked for the 4.4.2 release
SDImageCacheConfig.diskCacheExpireType #2357SDImageCache via SDImageCacheConfig.shouldUseWeakMemoryCache #2379FLAnimatedImage, this allow user to disable memory cache for associated FLAnimatedImage instance #2378diskImageDataForKey: sync API for SDImageCache to directly get the image data from disk #2391SDWebImageManager.runningOperations type changed from Array to Set #2382FLAnimatedImageView+WebCache delayed draw due to #2047 which is now reverted #2393__bridge_transfer with __bridge when convert from CFStringRef to NSString #2394See all tickets marked for the 5.0.0 release
See the 5.0 Migration Guide for a list of comprehensive changes and the way to update your code
SDAnimatedImageView, SDAnimatedImage and refactor the way we handle animated images #2140SDImageAPNGCoder #2149SDWebImageDownloader configs, separated them into a dedicated SDWebImageDownloaderConfig object #2263Use SDWebImageAvoidDecodeImage to allow user to control force decode feature for individual image request #2283
SDImageCache supports disk cache writing options. See SDImageCacheConfig diskCacheWritingOptions #2148
SDImageCache now uses NSData writeToFile:options:error instead of NSFileManager createFileAtPath:contents:attributes #2148
Moved SDImageCache maxMemoryCost and SDImageCache maxMemoryCountLimit to SDImageCacheConfig #2151
Added SDImageCache diskImageDataExistsWithKey: synchronous method #2151
Moved UIImage sd_imageLoopCount and UIImage isGIF (and renamed to sd_isAnimated) to UIImage+Metadata category, removed the outdated methods #2152
Move context and other type definitions to a separate header (SDWebImageDefine) to allow to be included without dependency #2188
Pass context arg from the top level APIs to the bottom level APIs to allow specify logic in the future #2189 d6a3e2c c24c3d3
Refactor the image indicator by creating SDWebImageIndicator and SDWebImageProgressIndicator protocols and two concrete classes that implement activity and progress indicators for both UIKit and AppKit #2185 46b62cf
Refactor the implementation of SDWebImagePrefetcher so it behaves more like a "shared instance" object, similar to other platform classes. Each instance will manage its own list of urls. #2191 1efc247 92f3d2c bc164d6
Refactored and enhanced the way we allow image transformations. Switched from a single delegate method to composition of SDImageTransformer #2219
API style refactoring - #2250
+(instanceType)sharedInstance in singleton to make it more easy to use in Swift. The generated interface should be simple open class var shared { get }AnyObject! implicitly unwrapped optionals (Except that null_resettable)CF_RETURNS_RETAINED for
Get Rule and CF_RETURNS_NOT_RETAINED for Create Rule to avoid any Unmanaged CF valueNS_STRING_ENUM to make it easy to use in Swift with dot syntaxNS_TYPED_ENUM to make it easy to use in Swift with dot syntaxRemove the extra calculation of image orientation for ImageIO coder & Fix macOS image orientation #2271
Added SDWebImageError (defined as NS_ERROR_ENUM) to group all our errors together #2290
Added tests for macOS
Add the SDWebImageContextStoreCacheType context option to specify target cache type when the image is downloaded by manager and will store to cache #2360
Feature watchOS WKInterfaceImage with sd_setImageWithURL #2331
Add options to specify query cache sync/async behavior #2312
SDWebImageManager loadImageWithURL:options:progress:completed: changed the completed param requirement from nullable to nonnull #2164See all tickets marked for the 4.4.1 release
See all tickets marked for the 4.4.0 release
UIViewAnimationOptionAllowUserInteraction as default options for convenient image transition #2315@synchronized with dispatch_semaphore_t in SDWebImageManager #2340See all tickets marked for the 4.3.3 release
See all tickets marked for the 4.3.2 release
See all tickets marked for the 4.3.1 release
See all tickets marked for the 4.3.0 release
sd_imageProgress property represent the image loading progress, this allow user add KVO on it for complicated logic #2172sd_imageTransition property support custom image transition after image load finished #2182setAnimationImagesWithURLs weak reference may dealloc before the animated images was set #2178See all tickets marked for the 4.2.3 release
See all tickets marked for the 4.2.2 release
UIProgressView to show image download progress #2096UIView+WebCache #2093 #2097 #2092See all tickets marked for the 4.2.1 release
SDWebImageCoderHelper; SDWebImageFrame abstracts animated images frames)See all tickets marked for the 4.2.0 release
UIImage+GIF category for animated GIF! Not enabled by default. #2064SDWebImageGIFCoder on macOS (use NSImage API) #2067-[NSImage isGIF] method to return whether current NSImage has GIF representation #2071SDImageCache disk cache #2057UIImage(GIF) sd_animatedGIFWithData crash #1991 #1837SDWebImageManager.m __destroy_helper_block_ crash #2048 #1941FLAnimatedImage instance on global queue #2047See all tickets marked for the 4.1.2 release
SDWebImageDownloaderOperation not call done when use SDWebImageDownloaderIgnoreCachedResponse #2049WebP decoding little enhancement. Do not need create WebP iterator for static images #2050finished check from equal to equal or greater than to protect accident condition #2051See all tickets marked for the 4.1.1 release
[SDWebImageDownloaderOperation reset]_block_invoke 2f892f9 fixes #1883SDWebImageDownloadOperation imageData multi-thread issue #2011 fixes #1998 [SDWebImageDownloaderOperation URLSession:dataTask:didReceiveData:] crashCFRelease on NULL if CGImageSourceRef create failed #1978 fixes #1968 #1834 #1947CGBitmapContextCreate bitmap memory leak #1976 replaces #1860 fixes #1974sd_currentBackgroundImageURL and sd_backgroundImageURLForState: for UIButton #2002UIButton placeholer-image even if the url is nil #2043 fixes #1721 #1964 replaces #1790CGImageSourceCreateIncremental to perform progressive decoding instead of decode partial data each time from the beginning to improve performance and remove that gray background #2040 fixes #1899macOS #1984WebP and animated WebP decoding #1985 fixes #1999 #1885FOUNDATION_EXPORT over extern #1977SDTestCase #1980CLANG_WARN_STRICT_PROTOTYPES #1995 #2027 fixes #2022macOS Demo deployment target to 10.10 to support build on Xcode 9 #2035See all tickets marked for the 4.1.0 release
NSURLSessionConfiguration used by SDWebImageDownloader #1891 fixes #1870macOS #1975NSURLErrorNetworkConnectionLost #1767CFBundleVersion and CFBundleShortVersionString not valid for all platforms #1784 + 23a8be8 fixes #1780UIActivityIndicator not always initialized on main thread #1802 + a6af214 fixes #1801SDImageCacheConfig forward declaration changed to import #1805@autoreleasepool to SDImageCache.storeImage #1849long long type transfer to NSInteger may become negative #1879self.URLOperations dictionary #1911 fixes #1909 #1950 #1835 #1838self which appears to create a dangled pointer #1940 fixes #1807 #1858 #1859 #1821 #1925 #1883 #1816 #1716d9f7cf4 (replaces #1781) fixes #1776See all tickets marked for the 4.0.0 release Versions 4.0.0-beta and 4.0.0-beta 2 list all the changes.
See all tickets marked for the 4.0.0 release
00bf467 efad1e5 8d1a0ae. Fixed #538, #880 and #586. This one is a more robust solution than #884 or #894. Can be activated via SDWebImageScaleDownLargeImages or SDWebImageDownloaderScaleDownLargeImagesSee all tickets marked for the 4.0.0 release
SDWebImage xcodeproj contains the following targets:
SDWebImage iOS static (iOS static lib)SDWebImage watchOS static (watchOS static lib)SDWebImage OSX (OSX dynamic framework)SDWebImage iOS (iOS dynamic framework)SDWebImage tvOS (tvOS dynamic framework)SDWebImage watchOS (watchOS dynamic framework)SDWebImage Demo xcodeproj contains the following targets:SDWebImage OSX DemoSDWebImage iOS DemoSDWebImage TV DemoSDWebImage Watch Demolibwep version to 0.5.1SDWebImageManager downloadImageWithURL:options:progress:completed: to loadImageWithURL:options:progress:completed: as it makes more sense, since we check the cache first and download only if needed a32a177SDWebImage+MKAnnotation, SDWebImage+WebP, SDWebImageFramework:SDWebImagetarget that build as a static library (all subspecs included) -> libSDWebImage.aSDWebImageiOS and SDWebImagetvOS targets that build as dynamic frameworksWebImage to SDWebImage. Renamed the WebImage.h to SDWebImage.h to match the framework namingSDWebImageDownloader method - downloadImageWithURL:options:progress:completed: now returns a SDWebImageDownloadToken * instead of id <SDWebImageOperation> (give the ability to cancel downloads using the returned token)SDWebImageDownloaderOperation initializer - initWithRequest:options:progress:completed:cancelled split into - initWithRequest:options and addHandlersForProgress:completed:. Note: there is no more cancel block64382b9 includes:
instancetype instead of idSDImageCache)SDWebImageQueryCompletedBlock with SDCacheQueryCompletedBlock and added an NSData * paramdone param of SDImageCache queryDiskCacheForKey:done: is now a SDCacheQueryCompletedBlock and those blocks must now include an NSData * paramSDWebImageCompletionWithFinishedBlock with SDInternalCompletionBlock and added an NSData * paramcompleted param of SDWebImageManager loadImageWithURL:options:progress:completed: is now SDInternalCompletionBlock and those blocks must now include an NSData * paramSDWebImageCompletionBlock to SDExternalCompletionBlockUIImage will no longer respond to sd_animatedGIFNamed: or sd_animatedImageByScalingAndCroppingToSize:SDWebImage iOS static lib target to SDWebImage iOS static for clarityNSData ImageContentType category, instead of returning the contentType as a string, the new added method sd_imageFormatForImageData will return a SDImageFormat enum valueSDImageCache configuration properties moved into SDImageCacheConfig (which is now available via config property):shouldDecompressImagesshouldDisableiCloudshouldCacheImagesInMemorymaxCacheAgemaxCacheSizestoreImage: methods from SDImageCache were async already, but declared as sync. Properly marked them as async + added completion. Got rid of the recalculate param. If the NSData is provided, use it. Otherwise, recalculate from the UIImagediskImageExistsForURL: and cachedImageExistsForURL: from SDWebImageManagerdiskImageExistsWithKey: from SDImageCachecleanDisk and clearDisk on SDImageCache. Renamed cleanDisk to deleteOldFiles. No longer expose the sync clearDisk and deleteOldFiles, just the async ones.SDImageCache queryDiskCacheForKey:done: to queryCacheOperationForKey:done:SDImageCache clarification: imageFromDiskCacheForKey: used to also check the memory cache which I think is misleading. Now imageFromDiskCacheForKey only checks the disk cache and the new method imageFromCacheForKey checks both cachesremoveImageForKey: and removeImageForKey:fromDisk: from SDImageCache that looked sync but were async. Left only the 2 async onesUIImageView sd_cancelCurrentHighlightedImageLoadsd_ prefix to the activity indicator related methods (setShowActivityIndicatorView:, setIndicatorStyle:, showActivityIndicatorView, addActivityIndicator, removeActivityIndicator) #1640dispatch_main_async_safe for all the completion blocks on the main queue (used to be dispatch_sync) - avoiding locks.dispatch_main_sync_safe as it can be mistakenly usedurl as param to progress block SDWebImageDownloaderProgressBlock - #984WebCache category on top of FLAnimatedImageView64382b9TARGET_OS_* macros. Added SD_MAC, SD_UIKIT, SD_IOS, SD_TV, SD_WATCH. The biggest issue here was TARGET_OS_MAC was 1 for all platforms and we couldn't rely on it.SDWebImageManager - added a new initializer (initWithCache:downloader:) 9112170UIImage responds to sd_imageData and sd_imageDataAsFormat: via the MultiFormat category. Those methods transform a UIImage to the NSData representation 82d1f2eSDWebImageDownloaderOperationInterface to describe the behavior of a downloader operation. Any custom operation must conform to this protocol df3b6a5WebCache categories into a UIView WebCache category. All the other categories will make calls to this one. Customization of setting the image is done via the setImageBlock and the operationKey e1840c3UIButton, MKAnnotationView, UIImageViewinstancetype and not a fixed type - c57cf7eNSURLSessionConfiguration for SDWebImageDownloader #1654url as param to progress block SDWebImageDownloaderProgressBlock - #9848a78586SDWebImageDownloaderOperation : cancelInternal was not called because of the old mechanism rellying on the thread property - probably because that thread did not have a runloop. Removed that and now cancelInternal is called as expected f4bdae6062e50a f7e8246 c77adf4 fdb8b2c 265ace4 0c47bc3. Check for main queue instead of main thread.setObjectForKey: object cannot be nil) - #1676 7940577Carthage bitcode issue) - #1593Add support for downloading images behind redirect)9cd6779 - fixed a potential retain cycledispatch_main_async_safe macro in order to avoid redefinition when included as PodprogressBlock (background queue)FLAnimatedImageView+WebCache - #1687[NSURLCache cachedResponseForRequest:] - the fix is actually avoiding to access NSURLCache which appears to generate a race condition. We only call it if necesarry (SDWebImageRefreshCached is used and the image cannot be cached by the system when it's too big or behind authentication)fb0cdb6d 1bf62d4 #1584 - fixes #1433 #1553 #1583 #1585) - Reverted.SDWebImageManager cacheKeyFilter block and do their own calculations there.6545a3aNSURLConnection with NSURLSession #1578 #1586 - fixes #1291 #1318 #823 #1566 #1515SDWebImageManager 86fc47bf7b - fixes #1398 #870fb0cdb6d 1bf62d4 #1584 - fixes #1433 #1553 #1583 #1585f1a471e - fixes #1444removeImageForKey: not synchronous e6e5c51 - fixes #1379 #1415https://chromium.googlesource.com/webm/libwebp to https://github.com/webmproject/libwebp)cancelAllDownloads method to SDWebImageDownloader #1504NSData to disk cache: [SDImageCache storeImageDataToDisk:forKey:] #1453sd_setImageWithPreviousCachedImageWithURL:andPlaceholderImage:options:progress:completed: and deprecated it. Will remove it in 4.0.0 b40124cCGContextDrawImage: invalid context 0x0 - #1496 (fixes #1401 #1454 #1457)CGBitmapContextCreateImage: invalid context 0x0 - #1464 (fixes #1423)#if TARGET_OS_IPHONE to #if TARGET_OS_IOS)MKAnnotationView+WebCache #15476406d8e, the wrong usage of dispatch_applylibwep version to 0.4.4bf899e2 fixes #1261 #1263 compilation issue CocoaPods vs non-CocoaPodscac21e1 fixes #1366, addresses #1350 and reverts a part of #1221 - from commit 6406d8e, the wrong usage of dispatch_applydcb7985 replaces #1345 - Load local credential file32923fa Xcode 7.1 updatesAdds support for iOS 8+ Framework and Carthage #1071 #1081 #1101
[Refactor] Use NSMutableSet for failed URLs' storage instead of array #1076
Make a constant for the error domain #1011
Improve operation behavior #988
Bug fix: Collection <__NSArrayM: > was mutated while being enumerated #985
added SDWebImageAvoidAutoSetImage option to avoid automatic image addition in UIImageView and let developer to do it himself #1188
Added support for custom disk cache folder with fall back for caches directory #1153
Added some files to the workspace so they are easier to edit 8431481
[Memory Issue] Clear SDWebImagePrefetcher progressBlock when it has completed #1017
avoid warning <Error>: ImageIO: CGImageSourceCreateWithData data parameter is nil if imageData is nil 88ee3c6 #1018
allow override diskCachePath #1041
Use __typeof(self) when assigning weak reference for block #1054
[Refactor] Implement cache cost calculation as a inline function #1075
Fix parenthesis to avoid crashes #1104
Add NSCache countLimit property #1140
failedURLs can be removed at the appropriate time #1111
Purge NSCache on system memory notifications #1143
Determines at runtime is UIApplication is available as per #1082 #1085
Fixes http://git.chromium.org/webm/libwebp.git/info/refs not valid #1175 + Reverted #1193 + #1177
404 image url was causing the test to fail 0e761f4
Fix for transparency being lost in transformed images. #1121
Add handling for additional error codes that shouldn't be considered a permanent failure #1159
add webp accepted content type only if WebP enabled #1178
fix ImageIO: CGImageSourceCreateWithData data parameter is nil #1167
Applied patch for issue #1074 SDWebImage residing in swift module breaks the debugger #1138
Fixed URLs with trailing parameters get assigned an incorrect image scale value #1157 #1158
Add newline to avoid compiler warning in WebImage.h #1199
libwep version to 0.4.3SDWebImageDownloaderAllowInvalidSSLCertificates option - #937SDWebImageTransformAnimatedImage) - #703SDWebImageDownloaderOperation - #876cancelAll crash - #838SD_LOG_NONE that allows silencing the SD logs from the PrefetchersetImageWithURL: - #896NSNotificationCenter dispatch on subthreads - #987SDWebImageDownloader threading issue - #1046failedURLs - #994maxConcurrentOperationCount, fixes #527 - #897NSArray - #929SDWebImageDownloaderOperation connection:didFailWithError: should match the code from connectionDidFinishLoading:. This fixes #872 - 7f39e5e304 - Not Modified HTTP status code handling - #942kPNGSignatureData data - #981sd_imageOrientationFromImageData: crash if imageSource is nil - #819 #813 #808 #828 - temporary fixSDWebImageCombinedOperation cancel crash (also visible as SDWebImageManager cancelAll) - 28109c4 #798 #809mark from pragma mark - #827UIImageView+HighlightedWebCache - #646 #765NSURLConnectionDelegate - #711 50c4d1dSDWebImageDownloader setSuspended: - #734SDImageCache removeImageForKey:withCompletion: - #732 cd4b925SDWebImageManager cacheKeyForURL: - 5fd21e5SDWebImageManager instance from the SDWebImagePrefetcher class - 6c409cdSDWebImageManager uses the shared instance of SDWebImageDownloader - 0772019SDWebImageManager cachedImageExistsForURL: to check if an image exists in either the disk OR the memory cache - #644UIImageView. Replaces #541 - #599 30f6726diskImageExistsWithKey: deadlock - #625 6e4fbaf
For consistency, added async methods in SDWebImageManager cachedImageExistsForURL:completion: and diskImageExistsForURL:completion:performSelector:onThread:withObject:waitUntilDone: - #698runningOperations - #68NSURLConnection response statusCode not valid (e.g. 404), downloader never stops its runloop and hangs the operation queue - #735SDWebImageRefreshCached bug for large images - #744SDWebImageDownloaderLowPriority - #713 #745cacheKeyFilter was set, this was ignored when computing the scaledImageForKey. For most of the developers that did not set cacheKeyFilter, the code will work exactly the same - eb91fdddispatch_main_async_safe macro - #505 af3e4f8SDScaledImageForKey if the input image is nil - #365 #750SDWebImageDelayPlaceholder option specified - #780startPrefetchingAtIndex: method from main queue - #694SDWebImageCompat.m to SDWebImage+MKAnnotation targetWebP support to a dedicated targetUIImageView which was causing a crash in the nested blockcalculateSizeWithCompletionBlockUIImageViewCollection <__NSArrayM: ...> was mutated while being enumerated. #471SDWebImageRefreshCached download option #326SDWebImageManager delegate methods ebd63a88c1SDWebImageCacheMemoryOnly flagGCD, ARC, NSCache and blocks