? ? ? 為了打包鏈接庫內(nèi)的資源文件国觉,將靜態(tài)庫修改為動態(tài)庫。程序在編譯的時候完全正常臊泰,在運行時卻出現(xiàn):“selector not recognized”蛉加,也就是找不到方法定義的錯誤,發(fā)現(xiàn)報錯的函數(shù)出現(xiàn)在擴展類中缸逃,更改為其它函數(shù)則可以正常運行针饥。
? ? ? ?查找資料定位到報錯的原因是:Objective-C沒有為每個函數(shù)(或者方法)定義鏈接符號,它只為每個類創(chuàng)建鏈接符號需频。這樣當(dāng)在一個靜態(tài)庫中使用類別來擴展已有類的時候丁眼,鏈接器不知道如何把類原有的方法和類別中的方法整合起來,就會導(dǎo)致調(diào)用類別中的方法時昭殉,出現(xiàn)”selector not recognized”苞七。為了解決這個問題,引入了-ObjC標志挪丢,它的作用就是將靜態(tài)庫中所有的和對象相關(guān)的文件都加載進來蹂风。
? ? 在Other Linker Flags里面加入-ObjC標志,問題順利解決乾蓬。