尝试从框架内加载nib时,无法找到名为error的nib

时间:2012-09-02 16:47:26

标签: objective-c xcode macos frameworks

我有一个“主应用程序”和一个“帮助应用程序”(沙箱,如果重要的话)共享一个私有框架,包括一些资源,nib文件,声音文件等。

两个应用程序都会调用并使用该框架而不会出现问题。但是从框架代码中我有一个NSViewController加载一个包含在其资源文件夹中的nib文件。只要它被“主应用程序”调用,这似乎就可以工作。但是,对Helper应用程序(登录项)执行相同操作无效,并且失败并显示"Unable to find nib named"错误。

实际的'Framework'被复制到Main应用程序的'Frameworks'目录中,我在帮助应用程序中使用@rpath来查找框架:@executable_path/../../../../Frameworks

这个设置似乎工作正常但是在运行时似乎框架代码试图在帮助应用程序的Resource文件夹下找到命名的Resource,而不是在Framework的资源文件夹下。我可以在xcode中设置一个设置或一些标志,以使框架始终在框架的可执行文件/库安装的确切路径下查看吗?

2 个答案:

答案 0 :(得分:0)

似乎唯一的解决方案是将框架复制到'Helper'应用程序。如果框架只是放置在主应用程序中的实际框架的符号链接,则不会加载资源。

答案 1 :(得分:0)

您可以做的是让您的框架动态或共享,如此处所述[{3}}

虽然这是一个复杂的过程,但是一个非常好的功能。

还有什么可以帮到你? 也许在Xcode中的Build Settings下编辑Library Search Paths或Framework Search Paths。在那里,您可以指定要查找的其他搜索路径。

即使如此,我也不会将框架复制到主应用程序的目录。我会将它放在磁盘上的一个位置,将它们添加到项目(Main和helper)并添加指定的搜索路径。

顺便问一下:你的框架是如何实现的?它是一个文件夹,是编译的,还是只是代码文件?