在xcode for iOS应用程序中存储数千个文件(在捆绑包中)



我有一个大约有20000个图像文件(动画帧)的应用程序。由于一大堆原因,手动打包是不可行的(尽管……如果我有更多的时间,我会这么做)。

Xcode的速度慢到只有几千个文件,当你达到数万个文件时,它就会完全停止工作(各种按钮会使Xcode崩溃)。我甚至听说有传言说,当你浏览65535个文件时,一些内置功能会停止工作,因为苹果公司的某个人使用了16位int来存储索引,唉。

对此有什么选择?似乎应该有某种方法告诉Xcode"所有这些文件都是静态二进制文件,你永远不会碰,把它们放在一个包里,然后忽略它们"。但是在谷歌上搜索和阅读文档,我找不到任何:(

您可以在捆绑包中保存一个压缩版本,并在运行时将其解压缩到应用程序的用户目录中。这只需要做一次。

最后,我半自动地打包了它们。我会在这里解释,以防它能帮助其他人解决同样的问题——直到/除非有人想出更好的答案:(

  1. 发明了我自己的文件格式,以快速解码的方式将100个PNG文件打包到一个文件中
  2. 实现的编码/解码方法
  3. 在我的应用程序中编写了一对Obj-C方法(仅通过调试开关启用),它们在运行时获取所有PNG文件,并将它们打包为N个文件
  4. 将前1000个文件移动到项目中
  5. 在模拟器上运行该应用程序,在硬盘上找到模拟器文件夹(位于Xcode4.5的OS X Mountain Lion下的Library/ApplicationSupport/IiphoneSimulator中)
  6. 将"打包"的文件移到主项目中
  7. 重复这三个步骤直到完成

这是IMHO的一个棘手的解决方案-令人沮丧的是,Xcode无法处理这个15年前所有其他IDE都解决的简单问题,但它确实有效。

我不为我的包格式感到骄傲,而且-给时间!-我会使用标准格式和/或为此编写适当的工具。

最新更新