我有一个相当奇怪的问题,我还不能完全了解它,我想在这里记录它,因为我没有在其他任何地方看到过这个问题。
我有一个我在Xcode3下开发的iPhone应用程序。这是完美的工作,我做了一些特殊的分配,也完美地在设备上工作。
然后我升级到Xcode4,下次我做了一个临时分发,我的应用程序在启动时崩溃了。毋庸置疑,它可以在模拟器和连接到我的开发机器的设备中工作。崩溃日志没有太大帮助,他们在main.m中表示在UIApplication的标准调用中崩溃。当然,我从来没有改变过那个文件。经过多次挖掘和拼接,我发现了问题。
Xcode认为我的* .xib文件的文件类型是text.xml而不是file.xib,所以只是将这些文件复制到app bundle而不是编译它们。该应用程序随后在启动时崩溃,因为它无法找到MainWindow.nib文件。
通过追溯我的subversion checkins,我发现xcodeproj中的project.pbxproj文件中记录的文件类型在Xcode4升级后的第一次检查中发生了变化。我不知道发生了怎么或为什么。我也无法通过UI看到我将如何影响该设置,我甚至没有打开一些改变的xib。 (为了解决我的问题,我在文本编辑器中修改了pbxproj文件。)
那么,是否有任何人对于如何或为何会发生这种情况有任何见解?
答案 0 :(得分:2)
我遇到了与迁移到xcode4的现有xcode3项目相同的问题。
我试过@jaylinn的解决方案,但我也发现该文件已经有了lastKnownReference。
我已经能够通过从项目中删除.xib文件(仅删除参考)然后将它们重新添加到项目来解决此问题。这有点痛苦,但它确实有效。
希望有所帮助。 -Mike
答案 1 :(得分:0)
这是为我们解决的问题。 XIB被识别为“explictFileType”,似乎在Xcode 4中无法识别。
在项目文件中查找这样的行(使用文本编辑器打开)...
C9B10BEA11D9084800F10866 / * Record.xib * / = {isa = PBXFileReference; explicitFileType = file.xib; path = Record.xib; sourceTree =“”; };
并将其更改为此...
C9B10BEA11D9084800F10866 / * Record.xib * / = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Record.xib; sourceTree =“”; };