set Targets Other Linker Flags value:-objC,-all_load,-force_load
For 64-bit and iPhone OS applications, there is a linker bug that prevents
-all_load
for example:
you will get a runtime exception of "selector not recognized" when linking against an objective-c static library that contains categories.then you will
包含静态库时候需要在Target的Other linker flags里面加上值:-objC,-all_load,-force_load
对于64位机子和iPhone OS应用
解决方法是使用-all_load 或者 -force_load。
-all_load强迫链接器从它能看见的所有文档中加载所有的对象文件,甚至那些没有OC代码的文档。
-force_load适用于Xcode3.2+版本,它允许finer得到文档加载的控制。每一个-force_load操作必须跟着一个文档路径,文档中的每一个对象文件将会被加载。
-all_load就是会加载静态库文件中的所有成员,
-ObjC就是会加载静态库文件中实现一个类或者分类的所有成员,
-force_load(包的路径)就是会加载指定路径的静态库文件中的所有成员。
举个例子
当链接一个包含类别的OC静态库时候,将会得到一个运行时异常:"selector not recognized"。你需要设置Other Linker Flags的值为-ObjC就OK了