当前位置:  开发笔记 > IOS > 正文

使用嵌入在动态框架中的第三方框架

如何解决《使用嵌入在动态框架中的第三方框架》经验,为你挑选了1个好方法。

据我所知,ios动态框架和静态的重大变化是静态在链接时(启动前)静态链接到代码,动态在启动/运行时链接

现在我有一个测试项目:

我的项目有一个与之相关的动态框架--A.framework.

import A.framework

A.framework在其中嵌入了一个框架 - B.framework

在我的主项目中,我想使用来自B.framework的类

现在我在主项目中看到一个简单的import语句:

import B.framework

它实际上工作,我可以使用嵌入在链接的A.framework中的B.framework内部的代码

怎么会这样?它是否安全可靠?主项目如何识别B.framework?

主项目直接将B.framework链接到项目的情况如何?在这种情况下,我在链接时看到许多"重复的符号错误"

最重要的是,我如何构建A.framework而不在其中嵌入B.framework,而当然使用其类和函数

任何澄清都会有所帮助:)



1> Rob Napier..:

如您所知,链接B.framework会导致重复的符号.这就是为什么A.framework不应该嵌入B.framework.你必须永远嵌入了一个框架,另一个框架,如果有任何机会,消费应用程序会在意嵌入式框架(在实践中,这意味着你真的应该只是从来没有做到这一点).

A.framework打包不正确.如果打包它,则应删除嵌入式框架并链接应用程序层的所有内容.如果其他人打包它,您应该打开它们的问题来纠正此错误.这个问题对动态框架来说并不陌生.这同样是静态框架的问题.链接依赖项的唯一合适时间是在应用程序层.

(如果您控制整个生态系统(例如Apple),则会有例外情况.那么诸如伞形框架之类的东西是可以接受的.但您不是Apple.)

编辑:可以将共享框架链接到另一个共享框架,但不能将其嵌入.关键是共享框架的唯一副本需要来自顶级应用程序.由于最终链接步骤将在加载时发生,因此您将不会有重复的符号,因为共享框架只有一个副本.只是不要将子框架嵌入你的框架中.

例如:

使用框架目标创建项目

在GMA.framework中拖动到框架目标(这将导致它链接但不嵌入)

创建应用目标

有应用程序链接GMA.framework和您的测试框架.这样可以正常工作而不会发生冲突,因为只有一个GMA.framework,它只嵌入在应用程序中.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有