編譯引數-ObjC的說明
原文連結:http://blog.csdn.net/gaoyp/article/details/38707117
一些第三方庫裡對系統庫的類加了category,
這時,就需要使用編譯引數:-ObjC,這樣第三方庫中對系統類作的擴充套件方法才能在工程中使用。
但是使用-Objc後,會產生兩個問題:
1、undefined symbols
2、duplicate symbol
undefined symbols 說明工程中沒有引入第三方庫引用的庫。
如果不加-ObjC引數,則在編譯時不會出錯,但執行時用到了沒引用庫的方法,則系統會崩潰。
這個問題好解決。只要找到缺的庫,引入工程就可以了。
duplicate symbol的問題就不好解決了,說明第三方庫中的類名和工程中的類名,或其它第三方庫中的類名重名了。
最常見的比如Reachability這個類,如果第三方庫中引用了,自己的工程中也引用了,就會報duplicate symbol。
如果引用的第三方庫沒有原始碼,就只能將自己工程中的重名類重新命名了。
應對上面的問題,如果自己要製作一個庫的話,要注意兩點:
1、避免對系統類加category,這樣,別人用你的庫時,不加ObjC引數也可以用你的庫。
2、如果庫中用到了其它的第三方的原始碼,尤其是用的比較普遍的,如Reachability,一定一定要對
這些類重新命名,最常見的作法就是給類名加個字首。以避免別人用你的庫時,產生duplicate symbol的問題。
相關文章
- MySQL 5.5編譯安裝cmake引數說明MySql編譯
- objc物件說明OBJ物件
- TOP引數說明
- mysqldump引數說明MySql
- mysqldump 引數說明MySql
- MySQL引數說明MySql
- OGG一些引數說明,帶翻譯!
- Elasticsearch 引數配置說明Elasticsearch
- kafka 引數配置說明Kafka
- redis 3.0 引數說明Redis
- golden gate 引數說明Go
- oracle引數說明(zt)Oracle
- Nginx的gzip配置引數說明Nginx
- Oracle Table建立引數說明Oracle
- Oracle Table 建立引數 說明Oracle
- mysqldump引數詳細說明MySql
- mosquitto命令引數說明UI
- Oracle Sequence Cache 引數說明Oracle
- 【MYSQL】MHA引數列表說明MySql
- Mysql JDBC Url引數說明MySqlJDBC
- php編譯引數PHP編譯
- 關於支援OPenACC的編譯器說明編譯
- Shell常用的特殊位置引數變數說明變數
- objc系列譯文(6.2):編譯器OBJ編譯
- linux常用核心引數說明Linux
- GoldenGate HANDLECOLLISIONS引數使用說明Go
- 【7】JVM引數說明和分析JVM
- 2.--Goldgate常用引數說明Go
- 【MySQL】SemisynchronousReplication配置和引數說明MySql
- Linux SHELL if 命令引數說明Linux
- Redis配置檔案引數說明Redis
- MySQL CMake引數說明手冊MySql
- mysql innodb相關引數說明MySql
- Goldengate引數簡要說明Go
- 【ASM學習】ASM引數說明ASM
- MySQL mysqldump命令的引數詳細說明MySql
- 檢視編譯引數編譯
- 編譯引數檢視編譯