問題:
+[UIImage imageNamedFromBundleWithPNG:]: unrecognized selector sent to class 0x199812698
蘋果的解釋為 : http://developer.apple.com/library/mac/#qa/qa1490/_index.html
解決方法為:找到 target 的圖標侄泽,更改其 Other Linker Flags 為: -all_load 或 -force_load
-force_load载佳,后跟隨一個文件位置孝凌,可以更精確地加載所需文件误债。
簡單點說就是挣郭,Objective-C 的動態(tài)特性使得需要迄埃,為鏈接器添加一個標簽(設置 Other Linker Flags 為 -ObjC)來解決通過 Category 向類添加方法的問題。
但這個標簽 -ObjC 在 64 位 和 iOS 中有問題兑障,需要使用 -all_load 或 -force_load侄非。
總結如下:
如果,第三庫中沒有 category流译,Other Linker Flags 無需設置
如果逞怨,第三方庫中有 category,需要設置為 -ObjC
如果福澡,某些 Xcode 版本中叠赦,出現問題,修改設置為 -all_load
-ObjC
這個flag告訴鏈接器把庫中定義的Objective-C類和Category都加載進來革砸。這樣編譯之后的app會變大(因為加載了其他的objc代碼進來)除秀。但是如果靜態(tài)庫中有類和category的話只有加入這個flag才行。
-all_load
這個flag是專門處理-ObjC的一個bug的算利。用了-ObjC以后册踩,如果類庫中只有category沒有類的時候這些category還是加載不進來。變通方法就是加入-all_load或者-force-load效拭。-all_load會強制鏈接器把目標文件都加載進來暂吉,即使沒有objc代碼。-force_load在xcode3.2后可用缎患。但是-force_load后面必須跟一個只想靜態(tài)庫的路徑借笙。
如果項目中同時需要加入多個靜態(tài)庫,有的靜態(tài)庫必須加入-ObjC较锡,而另外的庫不需要加入业稼,加入之后報錯,看一下出錯信息蚂蕴,
duplicate symbol OBJC_CLASS$_UMANSBJsonWriter in:
/Users/tempus-mac/Desktop/CococProject01/CococProject/Class/libMobClickLibrary.a(UMSBJsonWriter.o)
/Users/tempus-mac/Desktop/CococProject01/CococProject/Class/sdk/libTFTPayPlugin.a(UMSBJsonWriter.o)
ld: 472 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
是一個靜態(tài)庫中包含了另一個靜態(tài)庫低散,導致有些文件重復了俯邓。
原文:https://blog.csdn.net/u010607889/article/details/47295101