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即可。

你可能感兴趣的:(iOS-关于Xcode中-ObjC、-all_load、-force_load的用法)