创建iOS框架时如何解决类名冲突?

zou*_*oul 6 xcode linker frameworks ios

我正在编写一个Foo依赖于静态第三方库的 iOS 框架,Lib并且在正确链接时遇到问题。

如果Foo是静态库,我不会将它Lib链接到 ,而只会将主项目链接到它们两个。但是这种方法似乎不适用于框架:链接器抱怨缺少来自Lib.

所以我采取了另一种方法并链接FooLib. 现在链接器很高兴,但有一个明显的问题:如果主项目使用Lib出于自己的原因使用并且链接到FooLib,我会得到重复的符号:

Class <Something> is implemented in both <Here> and <There>.
One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)

我知道我可以停止链接该应用程序Lib,一切都会好起来的,但我想把事情做好。如何?

bca*_*tle 1

我能够让它适用于框架,尽管文档说它也应该适用于静态库。

我所做的是将主项目与两者联系起来,Foo正如Lib你所说。现在Foo出现“缺少符号”错误。选择Foo目标并转到其他链接器标志。添加-weak_framework Lib并急速!链接器将停止抱怨。重复符号运行时错误消失。

根据文档

-weak_framework选项告诉链接器弱链接指定框架中的所有符号。如果您需要链接到库而不是框架,则可以使用-weak_library链接器命令