SDWebImageは、画像の展示、キャッシュ、キャッシュのクリアを実現します。
4804 ワード
1.画像表示
NSURL *url = [NSURL URLWithString:@"http://v1.qzone.cc/avatar/201409/24/19/58/5422b1ff86ed0232.jpg%21200x200.jpg];
[imageView sd_setImageWithURL:url
placeholderImage:nil
options:SDWebImageProgressiveDownload
progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
NSLog(@"%.2f",(float)receivedSize/expectedSize);
} completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
// ,
switch (cacheType) {
case SDImageCacheTypeNone:
NSLog(@" ");
break;
case SDImageCacheTypeDisk:
NSLog(@" ");
break;
case SDImageCacheTypeMemory:
NSLog(@" ");
break;
default:
break;
}
}];
[self imageCachesWithUrl:[NSURL URLWithString:model.mediumLogo]];
2.画像キャッシュ-(void)imageCachesWithUrl:(NSURL*)url{
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:url options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
NSLog(@" ");
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
NSLog(@" ");
}];
}
3.キャッシュ写真を検出する[[SDWebImageManager sharedManager] cachedImageExistsForURL:url
completion:^(BOOL isInCache) {
NSLog(@" %ld",(unsigned long)isInCache);
}];
[[SDWebImageManager sharedManager ] diskImageExistsForURL:url
completion:^(BOOL isInCache) {
NSLog(@" %ld",(unsigned long)isInCache);
}];
4.画像キャッシュを整理するfloat tmpSize = [[SDImageCache sharedImageCache] getSize];
[[SDImageCache sharedImageCache] clearDisk];
//[[SDImageCache sharedImageCache] clearMemory];
[[SDImageCache sharedImageCache] clearDiskOnCompletion:nil];
[[SDWebImageManager sharedManager].imageCache clearDiskOnCompletion:nil];
[[SDWebImageManager sharedManager].imageCache clearMemory];
NSString *clearCacheName = tmpSize >= 1 ? [NSString stringWithFormat:@" (%.2fM)",tmpSize/1000000] : [NSString stringWithFormat:@" (%.2fK)",tmpSize/1000];
NSLog(@"%@",clearCacheName);
5.ダウンロード経路と原理:[SDWebImage](https://github.com/rs/SDWebImage) + , UIImageView+WebCacha category, 。 SDWebImage 。
setImageWithURL:placeholderImage:options: placeholderImage , SDWebImageManager URL 。
SDWebImageManager-downloadWithURL:delegate:options:userInfo:, SDImageCache queryDiskCacheForKey:delegate:userInfo:.
, ,SDImageCacheDelegate imageCache:didFindImage:forKey:userInfo: SDWebImageManager。
SDWebImageManagerDelegate webImageManager:didFinishWithImage: UIImageView+WebCache 。
, NSInvocationOperation 。
URLKey 。 NSOperation , notifyDelegate:。
, ( , )。SDImageCacheDelegate imageCache:didFindImage:forKey:userInfo:。 。
, , , imageCache:didNotFindImageForKey:userInfo:。
SDWebImageDownloader 。
NSURLConnection , delegate 、 。
connection:didReceiveData: ImageIO 。
connectionDidFinishLoading: SDWebImageDecoder 。
NSOperationQueue , UI。 , , 。
notifyDelegateOnMainThreadWithInfo: ,imageDecoder:didFinishDecodingImage:userInfo: SDWebImageDownloader。
imageDownloader:didFinishWithImage: SDWebImageManager 。
downloadDelegates , 。
SDImageCache , 。 NSInvocationOperation , 。
SDImageCache , , 。
SDWI UIButton+WebCache MKAnnotationView+WebCache, 。
SDWebImagePrefetcher , 。