加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 嵌套的Cocoa Touch框架

发布时间:2020-12-14 19:40:52 所属栏目:百科 来源:网络整理
导读:我正在寻找一种方法来生成具有子框架的框架,这些框架在运行时不会相互干扰. 下图最佳地描述了这个想法. 假设每个版本的JSON Parser框架与另一个版本不兼容. 我一直在尝试大量的方法来实现上述目标,但每次都失败了.最有希望的是伞式框架,但Apple不仅不鼓励使
我正在寻找一种方法来生成具有子框架的框架,这些框架在运行时不会相互干扰.
下图最佳地描述了这个想法.

假设每个版本的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方法).

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读