说说NSCache缓存的原理

2018-12-09  本文已影响1人  Adam_潜

https://www.jianshu.com/p/e850f8d120b0
iOS开发基础 | 被忽视和误解的NSCache
https://www.jianshu.com/p/e456b7b9f52d

NSCache *cache = [[NSCache alloc] init];
cache.delegate = self;
 - (void)start:(id)sender {
    for (int i = 0; I < 1000; I++){
        NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"1" ofType:@"pptx"]];
[cache setObject:data forKey:[NSString stringWithFormat:@"image_%d", arc4random()];
    }
}

- (void)cache:(NSCache *)cache willEvictObject:(id)obj{
    NSLog(@"delete cache data");
}
static inline NSString *AFImageCacheKeyFromURLRequest(NSURLRequest *request){
    return [[request URL] absoluteString];
}

@interface AFImageCache:NSCache<AFImageCache>
@end
@implementation AFImageCache

- (UIImage *)cacheImageForRequest:(NSURLRequest *)request{
    switch([request cachePolicy]){
        case NSURLRequestReloadIgnoringCacheData:
        case NSURLRequestReloadIgnoreLocalAndRemoteCacheData:
    }
    return [self objectForKey:AfImageCacheFromURLRequest(request)];
}

- (void)cacheImage:(UIImage *)image forRequest:(NSURLRequest *)request{
    if (image && request]){
      [self setObject:image forKey:AfImageCacheForKeyFromURLRequest(request)];
    }
}

上一篇 下一篇

猜你喜欢

热点阅读