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

时间:2014-02-16 20:42:15

标签: ios objective-c resources nsbundle

我制作的iOS应用程序使用存储在.plist文件中的字符串填充UITableView,该文件位于应用程序的主要软件包中(通常情况下您有.plist )。我注意到这个.plist会在构建阶段的Copy Bundle Resources阶段被复制到我的应用程序的应用程序目录中。我开始想知道它是否真的需要在那里,因为我从我的应用程序的主程序包访问它,而不是应用程序目录。因此,作为测试,我从Copy Bundle Resources阶段删除了.plist,运行了应用程序,发现我的UITableView仍然填充了.plist中的字符串。我已经清理了构建并再次运行应用程序,它绝对有效。两个问题:

  1. 如果您的应用对您的安全和隐私感兴趣,那么您是否应始终从Copy Bundle Resources阶段删除安全/私有资源,以便无法访问这些资源?
  2. 为什么像Storyboard这样的资源在没有实际访问时会被默认复制?"
  3. 非常感谢您的帮助

1 个答案:

答案 0 :(得分:4)

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

SEEMS工作的原因是建筑采取捷径。正常构建不会删除先前构建中放入捆绑包中的文件。

如果您执行干净(从项目菜单中)然后再次构建,Xcode将删除应用程序的先前副本并从头开始重新构建。您还应该从目标设备/模拟器中删除它,因为它还会在将新构建复制到设备上时从上一个构建中获取剩余资源。