iOS-关于Xcode中-ObjC、-all_load、-force_load的用法

最近在做一个项目的时候,需要使用到一个第三方库,这个库的使用向导里面特别说明,在添加完该库后,需要在Xcode的Build Settings下Other Linker Flags里面加入-ObjC标志,这个标志以前没使用过,所以我就专门研究了一下它的作用。

关于-ObjC

这个flag告诉链接器把库中定义的Objective-C类和Category都加载进来
这样编译之后的app会变大(因为加载了其他的objc代码进来)
但是如果静态库中有类和category的话只有加入这个flag才行

关于-all_load和-force_load

在64位ios应用环境下,由于链接器的一个bug,在静态库中只有category没有对应的class定义时,-ObjC标志会失效。这时可以使用-all_load强制加载所有目标文件,或者使用-force_load指定加载某一个包。
在Xcode4.2之后,这个链接器bug已经被修复,因此-all_load 和 -force_load标志都
不再需要了。在必要时添加-ObjC即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容