博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios--->ios沙盒总结
阅读量:4840 次
发布时间:2019-06-11

本文共 3162 字,大约阅读时间需要 10 分钟。

ios沙盒总结

沙盒介绍
  • iOS应用程序只能在该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。
  • 默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。
    • Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
    • Library:存储程序的默认设置或其它状态信息;Library/Caches: 存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除.
      Library/preferences: 存放的是 user default 存储的信息,iTunes会备份此目录, 应用程序重新启动不会丢弃数据,我们使用 NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中,这就是所谓的写到plist中!
    • tmp:提供一个即时创建临时文件的地方, iTunes不会备份此目录。

    • 用户生成的文件放在documents,自己的文件放在library/cache里面,简单的说明:如果你做个记事本的app,那么用户写了东西,总要把东西存起来。那么这个文件则是用户自行生成的,就放在documents文件夹里面。如果你有一个app,需要和服务器配合,经常从服务器下载东西,展示给用户看。那么这些下载下来的东西就放在library/cache。apple对这个很严格,放错了就会被拒。主要原因是ios的icloud的同步问题。

      沙盒和内存的差别
  • 说到缓存,缓存分为内存缓存和磁盘缓存两种,内存是指当前程序的运行空间,磁盘是程序的存储空间; 内存缓存速度快容量小,磁盘缓存容量大速度慢可持久化;内存是临时存储文件用的,供CPU直接读取,比如说打开一个程序,他是在内存中存储,关闭程序后内存就又回到原来的空闲空间, 而磁盘是永久存储东西的,只要里面存放东西,不管运行不运行 ,他都占用空间!磁盘缓存是存在Library/Caches

    沙盒常用操作
//1、获取程序的Home目录      NSString  *path = NSHomeDirectory();      NSLog(@"path:%@",path);      打印结果:path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A   真机上的目录是:/var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2   可见,真机上的目录是/var/mobile/Applications/这个目录下的,和模拟器不一样。这个是Home目录,其他的子目录和模拟器一样。//2、获取Document目录   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *path = [paths objectAtIndex:0];    NSLog(@"path:%@", path);    打印结果:   path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Documents//3、获取Cache目录   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);    NSString *path = [paths objectAtIndex:0];    NSLog(@"path:%@", path);    打印结果:path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Library/Caches//4、获取Library目录   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);    NSString *path = [paths objectAtIndex:0];    NSLog(@"path:%@", path);   打印结果:path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Library//5、获取Tmp目录   NSString *path = NSTemporaryDirectory();    NSLog(@"%@", path);   打印结果:path:/var/folders/hj/8sgyk0f555l1z_n95p2b2kp00000gn/T/  //6、写入文件   NSArray  *paths  =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);   NSString *docDir = [paths objectAtIndex:0];   if(!docDir) {        NSLog(@"Documents 目录未找到");   }   NSArray *array = [[NSArray alloc] initWithObjects:@"内容",@"content",nil];   NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];   [array writeToFile:filePath atomically:YES];//7、读取文件   NSArray  *paths  =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);   NSString *docDir = [paths objectAtIndex:0];   NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];   NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];   NSLog(@"%@",array);

转载于:https://www.cnblogs.com/frankltf/p/7920543.html

你可能感兴趣的文章
一语道破项目管理知识体系五大过程组
查看>>
Mac连接远程Linux管理文件(samba)
查看>>
WPF变换详解
查看>>
flash player 请求本地存储为无限制
查看>>
程序逻辑的组织方式
查看>>
今天正式开通博客
查看>>
javascript逗号添加函数
查看>>
Codeforces Round #307 (Div. 2) E. GukiZ and GukiZiana 分块
查看>>
hdu 5452 Minimum Cut 树形dp
查看>>
perf4j @Profiled常用写法
查看>>
配置的热更新
查看>>
ios view的frame和bounds之区别(位置和大小)
查看>>
USB小白学习之路(11) Cy7c68013A驱动电路设计注意事项(转)
查看>>
Luogu 2530 化工厂装箱员
查看>>
自定义webUI实例
查看>>
用NSAttributedString实现简单的图文混排
查看>>
多语境的操作
查看>>
SNS营销——网商成功之道
查看>>
jqgrid 加载时第一页面只显示多少条数据
查看>>
magic模块 :Exception Value:failed to find libmagic. Check your installation
查看>>