我有一个'Main app‘和一个'Helper app’(沙箱,如果有关系的话),它们共享一个私有框架,包括一些资源,nib文件,声音文件等。
该框架被两个应用程序调用和使用,没有任何问题。但是,在框架代码中,我有一个NSViewController,它加载一个nib文件,该文件包含在它的资源文件夹中。只要它被“主应用”调用,这似乎就能起作用。然而,对助手应用程序(登录项)执行相同的操作并不起作用,并且会失败,并出现"Unable to find nib named"错误。
实际的'Framework‘被复制到主应用程序的'Frameworks’目录中,我在助手应用程序中使用@r路径来查找框架:@executable_path/../../../../Frameworks
这个设置似乎工作得很好,但是在运行时,框架代码似乎试图在助手应用程序的Resource文件夹下查找命名资源,而不是在Framework的资源文件夹下。在xcode中有没有什么设置或者标志可以让框架总是在安装框架的可执行文件/库的确切路径下进行查看?
发布于 2012-09-03 02:14:03
似乎唯一的解决方案就是将框架复制到'Helper‘应用程序中。否则,如果框架只是放置在主应用程序中的实际框架的符号链接,则不会加载资源。
发布于 2012-09-03 02:36:19
你能做的就是让你的框架像这里描述的那样动态或共享,Dynamic Library Programming Topics
虽然这是一个有点复杂的过程,但它是一个非常好的功能。
还有什么可以帮助你的?
可能是在Xcode中编辑构建设置下的库搜索路径或框架搜索路径。您可以在其中指定要查找的其他搜索路径。
尽管如此,我也不会将框架复制到主应用程序的目录中。我会把它放在你磁盘上的一个地方,把它们添加到你的项目中(Main和helper),然后添加指定的搜索路径。
顺便问一下:你的框架是如何实现的?它是一个文件夹,是经过编译的,还是仅仅是代码文件?
https://stackoverflow.com/questions/12237880
复制相似问题