原理篇实用工具

篇2:SDWebImage源码看图片缓存

2017-11-05  本文已影响169人  南华coder

导语:这是SDWebImage源码理解的第二篇,本篇介绍SDWebImage中的缓存相关的内容

一、概述

在SDWebImage中处理图片缓存的是SDImageCache类

1、SDImageCache的由来
2、SDImageCache简述

二、内存缓存图片

SDImageCache中负责内存缓存的是NSCache的子类AutoPurgeCache

1、NSCache简介
2、AutoPurgeCache的设计

具体代码如下:

@interface AutoPurgeCache : NSCache
@end

@implementation AutoPurgeCache
- (nonnull instancetype)init {
    self = [super init];
    if (self) {
#if SD_UIKIT
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllObjects)   name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
#endif
    }
    return self;
}

- (void)dealloc {
#if SD_UIKIT
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
#endif
}
@end

说明:因为NSCache在iOS7系统中不会响应内存告警,SDWebImage中就子类化了NSCache,自己监听内存告警,并removeAllObjects。

3、内存缓存的清除策略

三、磁盘缓存图片

1、保存图片到磁盘
2、从磁盘中读取图片
3、磁盘缓存的清除策略

End

上一篇 下一篇

猜你喜欢

热点阅读