Xcode 5 Cocoa App无法在OS X 10.6上加载Nib

时间:2014-01-17 16:00:08

标签: xcode macos cocoa xcode5 nib

我为10.6和更新的操作系统创建了一个Cocoa应用程序。我在Xcode 5(10.9)中创建了一个全新的基于文档的应用程序,并更改了两个设置以使其与10.6兼容:我将部署目标更改为10.6并在MainMenu.xib和xxDocument.xib上关闭了Auto Layout基于文档的模板中包含的默认nib。我存档了我的应用程序(没有代码签名),没有添加其他代码,并在四个不同的操作系统上进行了测试。结果如下:
OS X 10.9:按预期启动并显示新的文档窗口("您的文档内容和#34;)。
OS X 10.8:按预期启动;与10.9相同。
OS X 10.7:无法启动;控制台应用程序产生" 应用程序名称:无法加载nib文件:MainMenu,退出"。
OSX 10.6:无法启动;控制台产生与10.7相同的效果。

我对申请的行为感到非常困惑。我绝对没有为Xcode为我创建的基于模板文档的应用程序添加代码;我刚刚更改了所需的设置,使其与10.6及更高版本兼容。我也尝试在构建设置中关闭ARC,这完全没有任何区别。我检查了Apple文档,还搜索了有关我收到的控制台错误的其他问题,但没有一个与此问题有关。我很惊讶10.7表现出这种行为,因为10.7与ARC兼容。我非常感谢有关如何解决这个问题的任何建议。我怀疑对默认模板进行了简单的修改,因为Apple可能无法提供需要进行大量修改的模板才能使其正常工作。感谢。

更新: 正如所建议的那样,我在Xcode中关闭了基础国际化。我运行了应用程序,它工作正常。我导出了应用程序(没有代码签名)并在所有上述操作系统上进行了测试。这次,我收到的错误发生在所有操作系统上。这甚至发生在我构建项目的SAME机器上,唯一的区别是我没有从Xcode运行它。我的下一步是实际创建一个MainMenu.xib文件(因为删除基础国际化删除了旧文件)并将其设置为主界面。现在,我不仅在所有操作系统上的导出应用程序中出现错误,而且在我尝试运行应用程序时它出现在Xcode中!还有其他我不想要的东西吗?

2 个答案:

答案 0 :(得分:2)

如前所述,您需要禁用Internationalization Base。

在项目导航器中单击项目的第一个项目(用蓝色页面表示,其中包含白色A,它是所有其他项目的根目录)

默认情况下,您应该看到左侧的信息页面(如果没有从顶部的标签中选择它)

Info属性表中的最后一项是Localization。在本地化下,您将能够添加和删除语言,默认情况下您应该有两个已经基本和英语。

删除两者,并取消选中复选框"使用Base Internationalization"

完成此操作后,从项目本身中删除任何* .xib文件。请务必仅删除参考文献!!!不要发送电子邮件!!!

删除引用后,进入Finder,打开项目目录,您将找到一个名为Base.lproj的目录,其中包含* .xib文件。将它们复制或移动到项目目录一级,然后删除Base.lproj目录。

返回xCode并添加回* .xib文件。 ++ K清理项目,然后++ R重建。

这应该将App包中的* .xib文件从Base.lproj(其中10.6似乎找不到它们)移动到Resources文件夹,并解决问题。

答案 1 :(得分:1)

新创建的Xcode 5项目已启用基础国际化。 OS X 10.8及更高版本支持基础国际化。您必须关闭基础国际化才能支持10.7和10.6。有关更多信息,请参阅以下Stack Overflow问题:

Base.lproj/MainMenu.xib is not available when compiling for targets before Mac OS X 10.8

支持10.6可能需要做的另一件事是将项目和xib文件的部署目标设置为10.6。我知道你说你在你的问题中将部署目标设置为10.6,但是不清楚是否为项目和xib文件设置了它。正如您所发现的那样,Apple的项目模板并未高度重视与旧操作系统版本的兼容性。