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         ,      。