沙盒总结

在模拟器中运行iOS程序,都会为该程序创建一个沙盒(SandBox),应用沙盒就是文件系统目录,与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录。

1、每个应用程序都有自己的存储空间

2、应用程序不能翻过自己的围墙去访问别的存储空间的内容

3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。

1.结构

应用沙盒目录的常见获取方式:

沙盒根目录:NSString *homePath =NSHomeDirectory();
    Documents:最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。这里面存的数据会被上传,所以不要放比较大的文件夹(例如音频,视频)

    //程序中得到Documents路径
    NSString  * filePathOfDocuments = NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory ,NSUserDomainMask ,  YES ) . lastObject ;

    Library->Caches:缓存文件,iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。

    //得到Caches路径
    NSString *filePathOfCaches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES).lastObject;

    Library->Preferences:iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。

    tmp:iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。

    //得到tmp路径
    NSString *filePathOfTmp = NSTemporaryDirectory();

2. 每次运行程序,沙盒所有路径都会改变

例子:这是我同一个工程运行两次后得到的两次不同的沙盒地址:

/Users/lanou3g/Library/Developer/CoreSimulator/Devices/2F90FE1A-A9A6-460F-85AC-5A84A660857A/data/Containers/Data/Application/F92AB308-07EF-4DA1-AEF8-0DF7B42506EA

/Users/lanou3g/Library/Developer/CoreSimulator/Devices/2F90FE1A-A9A6-460F-85AC-5A84A660857A/data/Containers/Data/Application/1E37E9BB-9C57-4465-910A-3FF2C82FEE7A

3.沙盒技术

Sandbox——————沙箱(sandbox)允许从任何源下载代码,除非对它施加限制。JAVA使用的JAVA sandbox阻止不安全的applets访问应用。 Security Managet—安全管理器定义了sandbox的边界。JAVA API 在允许它访问任何资源之前,涉及到安全管理器。
另: 沙盒安全模型限制对资源的访问,它将本地代码标注为可信赖的,同时将远程代码标注为不可信赖的。这样,本地代码对所有资源拥有完全的访问权,面远程代码在访问系统资源就会受到限制。 如果标注远程代码为可信赖的,那么在这种沙盒模型中出现一个签名远程代码的概念,就是说,如果远程代码带有数字签名标明它是受信赖的,那么这个远程代码将被视为本地代码。有权访问所有系统资源。

你可能感兴趣的:(iOS总结)