你好今天注意到在编写一个简单的iPhone应用程序时Xcode有时会在应用程序中启动一个新文件夹,而你仍在使用相同的应用程序。
/Users/Fuzzygoat/Library/Application Support/iPhone Simulator/User/Applications/4E5EF4F0-F410-46A6-888C-0D23BB97D2DC
有谁知道是什么原因导致Xcode交换到新的app文件夹(即名为“4E5EF4F0-F410-46A6-888C-0D23BB97D2DC”的文件夹)
EDIT_001:我注意到的一件事是我已经做了很多退出应用程序并重新启动以检查一组归档方法,这有时会让人感到困惑。有几次它没有找到保存的数据,我想这只是通过Xcode反复不断运行模拟器的副作用。如果我在没有Xcode的情况下在模拟器上进行测试,事情似乎就好了。首先,文件夹保持相同的名称。
注意:我每次都使用NSSearchPathForDirectoriesInDomains获取文档文件夹。
加里
答案 0 :(得分:3)
出于安全原因,iPhone OS会将应用程序(包括其首选项和数据)限制在文件系统中的唯一位置。此限制是安全功能的一部分,称为应用程序的“沙箱”。沙箱是一组细粒度控件,用于限制应用程序对文件,首选项,网络资源,硬件等的访问。在iPhone OS中,应用程序及其数据驻留在其他应用程序无法访问的安全位置。安装应用程序时,系统会为应用程序计算唯一的不透明标识符。使用根应用程序目录和此标识符,系统构造应用程序主目录的路径。因此,应用程序的主目录可以描述为具有以下结构:
/ApplicationRoot/ApplicationID/
在安装过程中,系统会创建应用程序的主目录和几个密钥子目录,配置应用程序沙箱,并将应用程序包复制到主目录。为每个应用程序及其数据使用唯一位置可简化备份和还原操作,应用程序更新和卸载。有关为每个应用程序创建的特定于应用程序的目录以及有关应用程序更新和备份和还原操作的详细信息。
答案 1 :(得分:2)
我知道重启模拟器时会发生这种情况。至少,那是我肯定观察过的时候。
开发人员文档告诉您路径可以在没有警告的情况下更改,并且永远不会依赖它。这是iPhone安全系统的一部分,可防止恶意应用程序使用硬编码路径查找和利用系统资源。