iOS調用FrameWork報錯

在開發過程中,添加framework後,調用framework方法出現 “selector not recognized” ,查看了日誌,是framework裏面使用category,原因是ObjectiveC不會爲每一個objc函數生成鏈接符號,而是會爲每一個類生成鏈接符號。通過category對一個已有的類進行擴展,那麼鏈接器就不知道如何把原代碼與category的代碼實現關聯起來,導致生成的對象無法響應屬於category的消息。
解決方法: build settings中的Other Linker Flags添加-Objc選項。這個選項會促使鏈接器加載庫中所有定義了Class和Category的文件。但這些額外的代碼會使目標文件變大。但在64位和iOS應用程序中,linker有一個bug,這個bug會導致objc選項無效,無法從靜態庫中加載只定義了Category的文件 ,這就需要添加-all_load或-force_load選項

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章