2014-10-19 70 views
6

我正在寻找一种方法来生成框架,其中有子框架,不会在运行时相互干扰。 插图下面介绍了最好的想法。嵌套的可可触摸框架

enter image description here

假设JSON解析器框架的每个版本是不相容与其他。

我一直在努力实现上述目标,但每次都失败了。最有希望的是伞式框架,但不仅苹果不鼓励它们的使用(我不清楚为什么),而且它们似乎没有按预期工作。

会发生什么,如果我创建一个应用程序与嵌入式框架本身具有嵌入式JSON解析器框架1.0一个,一切似乎工作得很好。但只要我添加JSON解析器框架V3.0到App和反对其链接的应用程序,框架开始使用JSON解析器框架V3.0在运行时,而不是1.0的这驻留在它内部。假设它们彼此不兼容,则可以打破框架A

同样适用于添加Framework B但是在运行时选择哪种实现似乎是随机的。

是否有可能创造框架具有嵌入JSON解析器框架V1.0并且是安全的这样的场景使用?我发现很难相信没有办法做到这一点,但我找不到一种方法来实现它,并开始想知道它是否有可能:(

+0

收件人框架我还没有找到嵌入的二进制文件只在收件人的应用程序,你是如何解决这个问题?我想做'app 2015-05-11 03:49:17

回答

2

你不详细说明如何你建立你的框架,所以这只是一个黑暗中的镜头

我假设你将嵌入式框架“Dynamic library install name base”设置为@rpath,然后在你的嵌入框架中删除@executable_path相关选项从“运行路径搜索路径”设置(这是应用程序,这就是为什么它首先找到“全局”框架的原因),这应该使事情按预期工作。

Anoth呃你可以考虑的方法是捆绑你在single framework bundle中使用的框架的3个版本。

最后,您还可以考虑手动链接(请参阅this post,其中_loadPluginAtLocation方法已定义)。

希望这会有所帮助。

+0

感谢您的建议!我会尽快查看一下。另外,除非我在答案中找到解决方案,否则我将准备一个示例项目来演示我试图实现的目标以及我的方法。 – 2014-10-28 08:13:38

+0

一个示例项目将很好的解决这个问题......但我希望你可以使用构建设置来修复... – sergio 2014-10-28 09:28:28