ios – 嵌套的Cocoa Touch框架
我正在寻找一种方法来生成具有子框架的框架,这些框架在运行时不会相互干扰.
下图最佳地描述了这个想法. 假设每个版本的JSON Parser框架与另一个版本不兼容. 我一直在尝试大量的方法来实现上述目标,但每次都失败了.最有希望的是伞式框架,但Apple不仅不鼓励使用它(我不清楚为什么),而且它们似乎没有按预期工作. 会发生什么,如果我创建一个嵌入式框架A的应用程序,它本身嵌入了JSON Parser框架v1.0,似乎一切正常.但是,只要我将JSON Parser框架v3.0添加到App并将App链接到它,Framework A就会在运行时开始使用JSON Parser框架v3.0,而不是驻留在其中的v1.0.并假设它们彼此不兼容,这可能会破坏框架A. 添加框架B也是如此,但在运行时选择的实现似乎是随机的. 是否可以创建具有嵌入式JSON Parser框架v1.0的Framework A,并且在这种情况下可以安全使用?我发现很难相信没有办法实现这一点,但我找不到办法让它发挥作用,并开始想知道它是否实际上是可能的:( 解决方法
你没有提供有关如何构建框架的详细信息,所以这只是一个黑暗的镜头.
我假设您将嵌入式框架“动态库安装名称库”设置为@rpath.然后,在嵌入框架中,从“Runpath搜索路径”设置中删除@executable_path相关选项(这是应用程序,这就是它首先找到“全局”框架的原因).这应该使事情按预期工作. 您可以考虑的另一种方法是捆绑您在single framework bundle中使用的框架的3个版本. 最后,您还可以考虑手动链接(请参阅this post,其中定义了_loadPluginAtLocation方法). 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |