码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发 -李洪强-清除缓存

时间:2016-06-26 00:23:31      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

 

 

 

 

 

//

//  SetViewController.m

//  dfhx

//

//  Created by dfhx_iMac_001 on 16/4/5.

//  Copyright © 2016 luoyun. All rights reserved.

//

 

#import "SetViewController.h"

 

@interface SetViewController ()<UITableViewDelegate,UITableViewDataSource>

 

@property (nonatomic, strong) UITableView * tableView;

 

@property (nonatomic, strong) NSArray * dataSource;

 

@property (nonatomic, copy) NSString * cacheSize;

 

@property (nonatomic, strong) UIView * navView;

 

@end

 

@implementation SetViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [self tableView];

    [self navView];

}

 

- (UIView *)navView

{

    if (!_navView) {

        _navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, Screen_Width, 64)];

        _navView.backgroundColor = RGBA(51, 51, 51, 1);

        [self.view addSubview:_navView];

        

        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];

        [_navView addSubview:btn];

        

        [btn mas_makeConstraints:^(MASConstraintMaker *make) {

            

            make.left.mas_equalTo(_navView).offset(10);

            make.size.mas_equalTo(CGSizeMake(40, 40));

            make.topMargin.offset(20);

        }];

        

        [btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];

        [btn setImage:[UIImage imageNamed:@"backItemImg.png"] forState:UIControlStateNormal];

        [btn setImageEdgeInsets:UIEdgeInsetsMake(15, 5, 8, 23)];

 

        

        

    }

    

    return _navView;

}

 

- (void)btnAction

{

    AppDelegate * app = (AppDelegate *)[UIApplication sharedApplication].delegate;

    

    [app.window setRootViewController:app.leftSlide];

    

}

 

 

// 设置返回导航栏

- (void)setNavigation

{

    UIBarButtonItem *LeftButton = [[UIBarButtonItem  alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:self action:@selector(back)];

    [LeftButton setImage:[UIImage imageNamed:@"backItemImg.png"]];

    LeftButton.imageInsets = UIEdgeInsetsMake(20, 0, 15, 20);

    LeftButton.tintColor = [UIColor whiteColor];

    self.navigationItem.leftBarButtonItem = LeftButton;

}

 

- (void)back

{

    [self.navigationController popViewControllerAnimated:YES];

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return 1;

}

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString * reuseID = @"cell";

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseID];

    if (!cell) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseID];

    }

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    cell.textLabel.text =@"清除缓存";

        

    cell.detailTextLabel.text = self.cacheSize;

 

    cell.selectionStyle = UITableViewCellSeparatorStyleSingleLine;

    

     [self myClearCacheAction:NO];

    

    return cell;

}

 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

        if ([self.cacheSize isEqualToString:@"0.00MB"]) {

            

            [self alertView:@"当前无缓存!" cancel:@""];

        }

        else

        {

            [self alertView:@"确认清除缓存?" cancel:@"取消"];

        }

}

 

- (void)alertView:(NSString *)alertTitle cancel:(NSString *)cancelTitle

{

    

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:alertTitle message:@"" preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelTitle style:UIAlertActionStyleCancel handler:nil];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

        

        if ([alertTitle isEqualToString:@"确认清除缓存?"]) {

            //清除缓存

            [self myClearCacheAction:YES];

        }

        

    }];

    if ([cancelTitle isEqualToString:@""]) {

        

        [alertController addAction:okAction];

    }

    else

    {

        [alertController addAction:cancelAction];

        [alertController addAction:okAction];

    }

    

    

    

    [self presentViewController:alertController animated:YES completion:nil];

    

}

 

//清理缓存

-(void)myClearCacheAction:(BOOL)isClear

{

    if (isClear == YES) {

        

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

            NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

            

            NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachePath];

            

            for (NSString *p in files) {

                NSError *error;

                NSString *path = [cachePath stringByAppendingPathComponent:p];

                if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {

                    //清理缓存文件

                    [[NSFileManager defaultManager] removeItemAtPath:path error:&error];

                }

            }

            [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];

        });

        

        

    }

    

    else

    {

        

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

            

            NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

            

            CGFloat fileSize = [self folderSizeAtPath:cachePath];

            

            dispatch_async(dispatch_get_main_queue(), ^{

                NSString * t = [NSString stringWithFormat:@"%.2fMB",fileSize];

                self.cacheSize = t;

                

                NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0];

                [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];

                

            });

            

            

        });

    }

    

}

 

 

-(void)clearCacheSuccess

{

    NSLog(@"缓存已清除!");

}

 

//计算目录下所有文件大小

- (CGFloat)folderSizeAtPath:(NSString *)folderPath

{

    NSFileManager *manager = [NSFileManager defaultManager];

    if (![manager fileExistsAtPath:folderPath]) {

        return 0;

    }

    

    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];

    

    NSString *fileName = nil;

    long long folderSize = 0;

    while ((fileName = [childFilesEnumerator nextObject]) != nil) {

        NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];

        folderSize += [self fileSizeAtPath:fileAbsolutePath];

    }

    return folderSize/(1024.0*1024.0);

}

 

//计算文件大小

- (long long)fileSizeAtPath:(NSString *)filePath

{

    NSFileManager* manager = [NSFileManager defaultManager];

    if ([manager fileExistsAtPath:filePath]){

        return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];

    }

    return 0;

    

}

 

 

 

// 懒加载tableview

- (UITableView *)tableView

{

    if (!_tableView) {

        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, self.view.width, self.view.height) style:UITableViewStylePlain];

        _tableView.dataSource = self;

        _tableView.delegate  = self;

        _tableView.backgroundColor = [UIColor whiteColor];

        _tableView.showsHorizontalScrollIndicator = NO;

        _tableView.showsVerticalScrollIndicator = NO;

        _tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

        _tableView.scrollEnabled = NO;

        [self.view addSubview:_tableView];

    }

    return _tableView;

}

 

#pragma mark ------当页面出现和消失的时候--------

- (void)viewWillAppear:(BOOL)animated

{

    

    [super viewWillAppear:animated];

    

    self.tabBarController.tabBar.hidden = YES;

}

 

- (void)viewWillDisappear:(BOOL)animated

{

    [super viewWillDisappear:animated];

    self.navigationController.navigationBarHidden = NO;

    self.tabBarController.tabBar.hidden = NO;

    

}

 

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

/*

#pragma mark - Navigation

 

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/

 

@end

iOS开发 -李洪强-清除缓存

标签:

原文地址:http://www.cnblogs.com/LiLihongqiang/p/5617119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!