ios – -ObjC标志能否有选择地应用于静态库?

前端之家收集整理的这篇文章主要介绍了ios – -ObjC标志能否有选择地应用于静态库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
TL; DR

如何使-ObjC链接器标志针对特定的静态库,而不是我链接的所有静态库,以避免未使用的目标文件与我的应用程序链接

太长;读了

因此,您正在开发一个新的iOS应用程序,并添加您自己开发的“objcutil”静态库,其中包含各种有用的Objective-C类(未实现为类别),以执行过去有用的各种事情.到目前为止,这么好,并且只有实用程序库中引用的那些目标文件才与应用程序链接.

然后,您决定集成要使用-ObjC其他链接器标志的Google Maps SDK,并且实用程序库中的所有突然依赖都无法解析,因为您尚未将Xcode配置为链接到这些库.

好的,我可以很容易地解决缺少的依赖项,但是现在您有不需要的未使用的目标文件和库依赖项,并且您希望比这更整洁.

那么你如何避免OCD过载?

来自ld联机帮助页的一些参考:

-ObjC Loads all members of static archive libraries that define an Objective C class or a category. This option does not apply to dynamic
shared libraries.

> Xcode版本:5.1.1
> OSX版本:10.9.4

解决方法

好的,所以答案是使用-force_load而不是-ObjC,因为-force_load更集中.

因此,如果您按照说明将静态框架复制到应用程序项目目录中,那么WRT到Google Maps SDK,那么框架将位于项目根目录中,您可以从其他链接器标志中删除-ObjC并将其替换为

-force_load GoogleMaps.framework / Versions / Current / GoogleMaps:

没有什么需要改变.

对于其他库,您需要使用完整的静态库路径作为-force_load的参数.

猜你在找的iOS相关文章