iOS-關於Xcode中-ObjC、-all_load、-force_load的用法

weixin_34116110發表於2016-09-22

最近在做一個專案的時候,需要使用到一個第三方庫,這個庫的使用嚮導裡面特別說明,在新增完該庫後,需要在Xcode的Build Settings下Other Linker Flags裡面加入-ObjC標誌,這個標誌以前沒使用過,所以我就專門研究了一下它的作用。

關於-ObjC

這個flag告訴連結器把庫中定義的Objective-C類和Category都載入進來
這樣編譯之後的app會變大(因為載入了其他的objc程式碼進來)
但是如果靜態庫中有類和category的話只有加入這個flag才行

關於-all_load和-force_load

在64位ios應用環境下,由於連結器的一個bug,在靜態庫中只有category沒有對應的class定義時,-ObjC標誌會失效。這時可以使用-all_load強制載入所有目標檔案,或者使用-force_load指定載入某一個包。
在Xcode4.2之後,這個連結器bug已經被修復,因此-all_load 和 -force_load標誌都
不再需要了。在必要時新增-ObjC即可。

相關文章