当我把控制器移除之后,内存竟然也没有丝毫的下降,这在APP上可完全不行。一开始我并没有想到是SD的问题,以为是我代码有什么问题,造成了循环引用,内存没有释放,于是乎,打开Leaks
抽丝剥茧,我们看到,大部分的内存都显示在SDWebImage的
- (UIImage*)diskImageForKey:(NSString*)key {NSData*data = [selfdiskImageDataBySearchingAllPathsForKey:key];if(data) {UIImage*image = [UIImagesd_imageWithData:data]; image = [selfscaledImageForKey:key image:image];if(self.shouldDecompressImages) { image = [UIImagedecodedImageWithImage:image]; }returnimage; }else{returnnil; }}
清除cache,只要在合适的时机去调用它就行
[[SDImageCache sharedImageCache]setValue:nil forKey:@"memCache"];
网上说把它放在applicationDidReceiveMemoryWarning里调用,但是我没有,因为在一些老机型里,比如iPhone4,内存爆炸的时候瞬间就crash了,来不及去调这个,所以我建议在做一些大图片多图片处理的时候,最好随时的去清理一下。