IOS教程

iOS清除所有缓存的实例代码

本文主要是介绍iOS清除所有缓存的实例代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 本文介绍了iOS清除所有缓存的实例代码,分享给大家,具体如下:

计算缓存

NSString *libPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
CGFloat fileSize=[self folderSizeAtPath:libPath];
- (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);
}
- (long long)fileSizeAtPath:(NSString*) filePath{
  NSFileManager* manager = [NSFileManager defaultManager];
  if ([manager fileExistsAtPath:filePath]){
    return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
  }
  return 0;
}

清除缓存

- (void)action:(id)sender
{
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
  NSString *path = [paths lastObject];

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

  for (NSString *p in files) {
    NSError *error;
    NSString *Path = [path stringByAppendingPathComponent:p];
    if ([[NSFileManager defaultManager] fileExistsAtPath:Path]) {
      //清理缓存,保留Preference,里面含有NSUserDefaults保存的信息
      if (![Path containsString:@"Preferences"]) {
        [[NSFileManager defaultManager] removeItemAtPath:Path error:&error];
      }
    }else{

    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

这篇关于iOS清除所有缓存的实例代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!