4

我有一个相当奇怪的问题,我还不能完全理解,我想在这里记录它,因为我还没有在其他任何地方看到过这个问题。

我有一个在 Xcode3 下开发的 iPhone 应用程序。这工作得很好,我做了一些在设备上也能完美工作的临时分发。

然后我升级到 Xcode4,下次我进行临时分发时,我的应用程序在启动时崩溃了。不用说它在模拟器和连接到我的开发机器的设备中工作。崩溃日志没有太大帮助,它们在对 UIApplication 的标准调用中表明 main.m 中发生了崩溃。当然,我从未更改过该文件。经过多次挖掘和拼凑,我发现了问题所在。

Xcode 认为我的 *.xib 文件的文件类型是 text.xml 而不是 file.xib,因此只是将这些文件复制到应用程序包而不是编译它们。然后该应用程序在启动时崩溃,因为它找不到 MainWindow.nib 文件。

通过追溯我的 subversion 签入,我发现 xcodeproj 中 project.pbxproj 文件中记录的文件类型在 Xcode4 升级后的第一次签入中发生了变化。我不知道这是如何发生的或为什么发生的。我也无法通过 UI 看到我将如何影响该设置,我什至没有打开一些改变的 xib。(为了解决我的问题,我在文本编辑器中修改了 pbxproj 文件)。

那么,是否有人对这可能发生的方式或原因有任何见解?

4

2 回答 2

2

我已经迁移到 xcode4 的现有 xcode3 项目遇到了同样的问题。

我尝试了@jaylinn 的解决方案,但我也发现该文件已经有 lastKnownReference。

我已经能够通过从项目中删除 .xib 文件(仅删除参考)然后将它们重新添加到项目中来解决此问题。这有点痛苦,但它有效。

希望有帮助。-麦克风

于 2011-05-06T22:53:45.330 回答
0

这是为我们解决的问题。XIB 被识别为“explictFileType”,在 Xcode 4 中似乎无法识别。

在您的项目文件中寻找这样的一行(使用文本编辑器打开)...

C9B10BEA11D9084800F10866 /* Record.xib */ = {isa = PBXFileReference; 显式文件类型 = 文件.xib; 路径 = Record.xib; 源树 = ""; };

并将其更改为...

C9B10BEA11D9084800F10866 /* Record.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; 路径 = Record.xib; 源树 = ""; };

于 2011-04-05T18:09:57.440 回答