zoukankan      html  css  js  c++  java
  • iOS-app清除缓存

    一直寻寻觅觅找app的清除缓存的方法,发现:并没有什么固定的方法,你既然有做对应的缓存机制,这个机制就应该有清除缓存的方法。例如如果你使用某个第三方的图片库,这个库有缓存机制,那么它就应该提供对应的清除缓存的方法。你调用对应的方法进行清除,如果你自己有用到数据库,那么你就应该清除数据库里面的数据等等。有的公司需求是显示缓存大小,有的不需要:

    @property ( nonatomic , strong ) UILabel * cachLabel;//显示缓存有多少m

    cell.cachLabel . text = [ NSString stringWithFormat : @"(%.2fM)" , [ self filePath ]];

    // 显示缓存大小

    - ( float )filePath

    {
        
        NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
        
        return [ self folderSizeAtPath :cachPath];
        
    }

    不需要显示缓存大小M的:

        //iOS8以上的版本使用
                UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"是否清除缓存?"preferredStyle:UIAlertControllerStyleAlert];
                
                UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                    //清除缓存所需要做的处理
                    [self clearFile];
                }];
                UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
                    
                }];
                [alertController addAction:okAction];
                [alertController addAction:cancelAction];
                
            [self presentViewController:alertController animated:YES completion:nil];

    #pragma mark ---action---

    //1:首先我们计算一下 单个文件的大小

    - ( long long ) fileSizeAtPath:( NSString *) filePath{
        
        NSFileManager * manager = [ NSFileManager defaultManager ];
        
        if ([manager fileExistsAtPath :filePath]){
            
            return [[manager attributesOfItemAtPath :filePath error : nil ] fileSize ];
            
        }
        
        return 0 ;
        
    }

    //2: 遍历文件夹获得文件夹大小,返回多少 M(提示:你可以在工程界设置()m)

    - ( float ) folderSizeAtPath:( NSString *) folderPath{
        
        NSFileManager * manager = [ NSFileManager defaultManager ];
        
        if (![manager fileExistsAtPath :folderPath]) return 0 ;
        
        NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator ];
        
        NSString * fileName;
        
        long long folderSize = 0 ;
        
        while ((fileName = [childFilesEnumerator nextObject ]) != nil ){
            
            NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
            
            folderSize += [ self fileSizeAtPath :fileAbsolutePath];
            
        }
        
        return folderSize/( 1024.0 * 1024.0 );
        
    }

    // 清理缓存

    - ( void )clearFile

    {
        
        NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
        
        NSArray * files = [[ NSFileManager defaultManager ] subpathsAtPath :cachPath];
        
        NSLog ( @"cachpath = %@" , cachPath);
        
        for ( NSString * p in files) {
            
            NSError * error = nil ;
            
            NSString * path = [cachPath stringByAppendingPathComponent :p];
            
            if ([[ NSFileManager defaultManager ] fileExistsAtPath :path]) {
                
                [[ NSFileManager defaultManager ] removeItemAtPath :path error :&error];
                
            }
            
        }
        
        [ self performSelectorOnMainThread : @selector (clearCachSuccess) withObject :nil waitUntilDone : YES ];
        
    }

    - ( void )clearCachSuccess
    {
        
        NSLog ( @" 清理成功 " );

        //iOS8以上的版本使用
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"缓存清理完毕"preferredStyle:UIAlertControllerStyleAlert];
        
        UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
          
           
        }];
       
        [alertController addAction:okAction];
        [self presentViewController:alertController animated:YES completion:nil];
        
       [self.tableView reloadInputViews];//清理完之后重新导入数据
        
    }

    给app评论功能实现

      //评价
                [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=1017244804&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8"]];

  • 相关阅读:
    ubuntu开启SSH服务
    Ubuntu修改虚拟内存(即swap空间)
    【转】Ubuntu 13.10中MyEclipse 10.6+下载+安装+破解
    【转】 ubuntu下安装mysql
    【转】 Ubuntu 11.04 下安装配置 JDK 7
    Linux非root用户安装jdk和tomcat
    algorithm之改变序列算法--待解决
    时间日期设置--ctime头文件
    C中的一些函数
    algorithm之不变序列操作
  • 原文地址:https://www.cnblogs.com/linxiu-0925/p/5465188.html
Copyright © 2011-2022 走看看