在建立本身的静态库时引入afn3.x,真机调试的时候遇到了这个问题ios
解决方法:spa
在Xcode工程的Other linker flags中添加-ObjC 标志调试
-------------code
在Objective-C中,因为方法调用都是在运行期肯定的,所以没有针对方法的symbol,只有针对类的。ip
这样在静态库中若是使用了category扩展已有的类,编译器不知道如何将category和已有的类整合在一块儿,就会致使unrecognized selector问题。添加-ObjC标志后,编译器会把一个类相关的全部目标文件都加载,这样就解决了这个问题。可是因为这样作会使可执行文件体积变大,因此没有设为默认选项。编译器
在64位ios应用环境下,因为连接器的一个bug,在静态库中只有category没有对应的class定义时,-ObjC标志会失效。这时可使用-all_load强制加载全部目标文件,或者使用-force_load指定加载某一个包。io
在Xcode4.2以后,这个连接器bug已经被修复,所以-all_load 和 -force_load标志都再也不须要了。在必要时添加-ObjC便可。编译
-----------class
在引入第三方静态库的时候有时候也会出现这种问题:扩展
此时 进入这个.a文件所在的目录,在终端使用 lipo -info xxx.a 看看这些静态文件是否支持64位,若是是不支持64位的能够下载一个最新的支持 64位的三方库.