Ios 主捆绑包和应用程序目录中的文件

Ios 主捆绑包和应用程序目录中的文件,ios,objective-c,resources,nsbundle,Ios,Objective C,Resources,Nsbundle,我正在制作一个iOS应用程序,它使用存储在应用程序主捆绑包中的.plist文件中的字符串填充UITableView(通常使用.plist)。我注意到,这个.plist正在通过构建阶段的copybundle Resources阶段复制到我的应用程序目录中。我开始怀疑它是否真的需要存在,因为我是从我的应用程序的主捆绑包而不是应用程序目录访问它的。因此,作为一项测试,我从复制捆绑资源阶段删除了.plist,运行了该应用程序,发现我的UITableView仍然使用.plist中的字符串填充。我已经清理了

我正在制作一个iOS应用程序,它使用存储在应用程序主捆绑包中的.plist文件中的字符串填充UITableView(通常使用.plist)。我注意到,这个.plist正在通过构建阶段的
copybundle Resources
阶段复制到我的应用程序目录中。我开始怀疑它是否真的需要存在,因为我是从我的应用程序的主捆绑包而不是应用程序目录访问它的。因此,作为一项测试,我从
复制捆绑资源
阶段删除了.plist,运行了该应用程序,发现我的UITableView仍然使用.plist中的字符串填充。我已经清理了构建并再次运行了应用程序,它肯定能工作。两个问题:

  • 如果您的应用程序对安全性和隐私感兴趣,您是否应该始终从
    复制捆绑资源
    阶段删除安全/私有资源,使其无法访问
  • 为什么像故事板这样的资源在默认情况下会被复制,而实际上它们不是从那里访问的?”

  • 非常感谢您的帮助

    您做出了错误的假设。应用程序目录主捆绑包。当您从复制阶段删除文件时,这些文件将不会安装在您的应用程序中,应用程序将失败

    它似乎可以工作的原因是构建采用了快捷方式。普通构建不会删除上一个构建放入捆绑包中的文件


    如果进行清理(从“项目”菜单)然后再次构建,Xcode将删除应用程序的上一个副本并从头开始重新构建。您还应该将其从目标设备/模拟器中删除,因为当它将新的构建复制到设备上时,它也会从上一个构建中提取剩余的资源。

    您做出了错误的假设。应用程序目录是主捆绑包。当您从复制阶段删除文件时,这些文件将不会安装在您的应用程序中,应用程序将失败

    它似乎可以工作的原因是构建采用了快捷方式。普通构建不会删除上一个构建放入捆绑包中的文件


    如果进行清理(从“项目”菜单)然后再次构建,Xcode将删除应用程序的上一个副本并从头开始重新构建。您还应该从目标设备/模拟器中删除它,因为当它将新版本复制到设备上时,它也会从上一个版本中提取剩余的资源。

    太棒了,谢谢!现在我的问题是,如果我不想呢他将我的.plist中的数据设置为可访问,以便有人无法向其中添加数据或更改其中的数据,从而更改我的应用程序正在处理的信息?除了越狱设备外,您的应用程序包无法在您的程序外进行读写操作。但是,如果有人在mac上打开我的应用程序的.ipa文件,请控制单击it、 点击“显示包裹内容”“向他们显示应用程序中所有资源的选项,因此他们可以做一些简单的事情,比如向.plist文件添加项目?啊,这是因为它破坏了代码签名,对吗?”?这意味着它不会运行?但这仍然不能阻止人们看。plist,那么我该如何阻止它呢?对。如果有人更改了捆绑包,应用程序将不会启动。防止人们查看捆绑包内容的唯一方法是对其进行加密。太棒了,谢谢!现在我的问题是,如果我不希望.plist中的数据可以访问,以致于有人无法向其中添加数据或更改其中的数据,从而更改我的应用程序正在处理的信息,该怎么办?除了在越狱设备上,您的应用程序包无法在您的程序之外进行读写操作。但是,比如说在mac上可以打开我的应用程序的.ipa文件,控制点击它,点击“显示软件包内容”选项,向他们显示应用程序中的所有资源,因此他们可以做一些简单的事情,比如在.plist文件中添加一个项?啊,这是因为它破坏了代码签名,对吗?这意味着它不会运行?但这仍然不能阻止人们看。plist,那么我该如何阻止它呢?对。如果有人更改了捆绑包,应用程序将不会启动。防止人们查看捆绑包内容的唯一方法是对其进行加密。