天天看點

clang -rewrite-objc的使用點滴

clang -rewrite-objc的作用是把oc代碼轉寫成c/c++代碼,我們常用它來窺探oc的一些秘密。 

1、最簡單的例子

main.m的代碼如下: 

打開終端,來到main.m所在目錄,執行如下指令: 

執行之後,目錄下多出一個main.cpp檔案,打開一看,一兩百行代碼。其關鍵代碼如下: 

clang -rewrite-objc的使用點滴

這個例子是用來研究block的原理的,在網上能搜到,本文無意解釋這些代碼。 

2、指定sdk

有的oc代碼要轉成c代碼時,在真機和模拟器上差别還是挺大的。如果需要指定sdk,那麼要結合xcrun指令,例如指定真機: 

如果要指定模拟器: 

模拟器和真機都有預設的sdk版本,也可以指定具體某版本: 

當然,你要先看看你機器上都裝哪些sdk,xcodebuild指令可以完成這個任務:

clang -rewrite-objc的使用點滴

3、指定framework

如果使用了第三sdk,例如(main.m檔案): 

代碼中使用了聽雲的sdk,這時運作clang -rewrite-objc ,結果如下: 

clang -rewrite-objc的使用點滴

出錯了,忘記引入聽雲的這個framework了,clang不知到何處去找,這時需要用-f開關告訴它。 

執行指令,ok,成功了。 

以上示例都是為了盡可能簡單,實際上可以同時指定多個源檔案、多個framework。 

分享即快樂。 

繼續閱讀