两个Framework/Executable 引用了共同Static Mach-O
这里包含了Static Framework 和 Static Lib 两种含义
可能会带来以下问题
问题 | 原因 |
---|---|
体积增大 | 静态的Static Mach-O 重复进入了Framework 和 Executable |
类名重复 | 静态Static Mach-O 的类,在运行时同时存在于两个符号表 |
1 | Class SharedLib is implemented in both......One of the two will be used. Which one is undefined. |
两个Framework/Executable 引用了共同Dynamic Mach-O
如果将 SharedLib.a 更改为默认的Dynamic Mach-O SharedLib.framework,就不会出现以上的问题
原因是由于 Dynamic Framework不会加入自己所依赖的Framework的符号表,仅仅会把类名以 Undefined 形式加入
但是需要在最终的 Target.app中同样将 SharedLib.framework 加入才能正常使用Target.app
- 注意: 这里使用的词是正常使用,即使不添加 SharedLib.framework 也可以让Target.app Build Success 但是真机会抛出 运行时找不到错误
两个Static Lib 引用共同的Framework
两个Static Lib引用共同的Framework的也不会有任何问题,原因在于
Static Mach-O 仅仅是 .o 文件的集合,而Framework已经是 Final File了,不会再进入一个 .o 集合
但是需要在最终的 Target.app中加入 Framework 加入才能正常使用Target.app