iOS开发者进阶手机移动程序开发

iOS内存警告处理

2019-07-02  本文已影响1人  __Mr_Xie__
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    // 1 清除磁盘
    // 清除类型为SDImageCacheTypeDisk:直接删除,重新重新创建
    // 清除类型为SDImageCacheTypeDisk:清除过期缓存,计算当前缓存大小,和z设置的最大缓存数量比较,如果超出,那么会继续删除(按文件的先后顺序)
    [[SDWebImageManager sharedManager].imageCache clearWithCacheType:SDImageCacheTypeMemory completion:nil];
    
    // 2 取消当前所有的操作
    [[SDWebImageManager sharedManager] cancelAll];
}
// 如果出现内存警告,ios6.0之前,系统会自动清理视图;ios6.0之后,系统不会再自动清理视图,需要手动处理;
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0) {
        // 需要注意的是self.isViewLoaded是必不可少的,其他方式访问视图会导致它加载,在WWDC视频也忽视这一点。
        // 是否是正在使用的视图
        if (self.isViewLoaded && !self.view.window) {
            // 目的是再次进入时能够重新加载调用viewDidLoad函数。
            self.view = nil;
        }
    }
}

Author

如果你有什么建议,可以关注我的公众号:iOS开发者进阶,直接留言,留言必回。

上一篇下一篇

猜你喜欢

热点阅读