我有一些带有专有扩展名的二进制文件,在我编译时不会在构建中更新。在具有相同项目的以前版本的 Xcode 中,它会检测到文件已更改,并且我很少需要执行“清理”,因为我必须对这个版本执行此操作。当然,这会花费更多时间——如果有人能让我知道 Xcode 5 发生了什么变化和/或我能对此做些什么,我将不胜感激。
我没有包含任何项目细节,因为它实际上只是一个在资源文件夹中具有自定义扩展名的专有二进制文件,该文件用于在自上次编译后更改时自动更新。如果您需要任何特定的项目设置,我很乐意提供。
它使用的是一种“蓝色”资源文件夹,它是对其所在文件夹的引用,而不仅仅是复制到项目目录中。我很抱歉,因为我忘记了这个特定的资源文件夹类型叫什么(我猜是参考)。
版本:Xcode 5 (5A1413)
更新:
这只发生在我引用我使用 fopen、fwrite 等以编程方式修改的文件时,并且在使用 OSX 中的文件编辑器重新保存文件(没有真正更改它)时,Xcode 会看到它已更改。
我现在正在研究 FSEvents 以查看这个底层 API 是否是我需要使用的东西,尽管我还不确定如何使用它设置标志。
更新:
好吧,作为一个简单的测试,我采用相同的文件并通过以下方式重新保存它:
NSData* data = [[NSData alloc] initWithContentsOfFile: @"/location/file.dat"];
[data writeToFile:@"/location/file.dat" atomically:YES];
果然,在我调用它然后运行使用该资源的应用程序之后,它会在构建期间通过 Xcode 更新。因此,Xcode 5 似乎依赖于标准 io 函数未设置的一些特殊标志。在这一点上,我可以用那两行东西修补我所拥有的东西,或者弄清楚标记机制是什么,以及如何写入它。(FSEvents?我在那里看不到写入机制..)