Xcode4破坏了nib文件

4
我有一个相当奇怪的问题,目前还无法彻底解决,我想在这里记录下来,因为我没有看到任何其他地方讨论过这个问题。
我有一个 iPhone 应用程序,在 Xcode3 下进行开发。这完美地运行,并且我已经完成了一些 ad-hoc 分发,也在设备上完美地工作。
然后我升级到 Xcode4,在下一次进行 ad-hoc 分发时,我的应用程序在启动时崩溃了。不用说,在模拟器和连接到我的开发机器的设备上都可以正常工作。崩溃日志没有太多帮助,它们指示了在 main.m 中发生了崩溃,在 UIApplication 的标准调用中。当然,我从未更改过该文件。经过长时间的挖掘和拼凑,我终于发现了问题所在。
Xcode 认为我的 *.xib 文件的文件类型是 text.xml,而不是 file.xib,因此只将这些文件复制到应用程序包中而不是编译它们。应用程序随后在启动时崩溃,因为找不到 MainWindow.nib 文件。
通过追溯我的 Subversion 提交,我发现在升级 Xcode4 后的第一次提交中,项目.pbxproj 文件中记录的文件类型已更改。我不知道为什么会发生这种情况。我也无法通过 UI 看到如何影响该设置,而且我甚至没有打开一些已更改的 xib。 (为了解决我的问题,我在文本编辑器中修改了 pbxproj 文件)。
那么,有人知道这可能是如何或为什么会发生的吗?

好奇心。那个人系统地追踪下来了。 :-) 我猜这是用的 Xcode 4.0 而不是 4.0.1 更新? - John Parker
是的,它是4.0版本,而且确实需要跟踪找到! - Andy
2个回答

2

我在将我的现有xcode3项目迁移到xcode4时遇到了同样的问题。

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

我已经通过从项目中删除.xib文件(仅删除引用)然后重新将它们添加到项目中来解决了这个问题。虽然有点麻烦,但它确实有效。

希望能对你有所帮助。 -Mike


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 = ""; };


嗯,刚刚检查了project.pbxproj的版本,它总是使用lastKnownFileType。28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = MainWindow.xib; sourceTree = "<group>"; }; - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接