? 當我們想了解某些Objective-C代碼的實現(xiàn)原理時湖雹,就會想到在終端使用clang命令可以將OC代碼通過runtime機制轉(zhuǎn)成C++代碼嗜桌。如:clang -rewrite-objc main.m
,但一般都會遇到如下錯誤:
In file included from ViewController.m:9:
**./ViewController.h:9:9: ****fatal error: ****'UIKit/UIKit.h' file not found**
#import <UIKit/UIKit.h>
** ^**
1 error generated.
查閱資料后了解到該問題可以通過如下方法解決:
clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk xxxxx.m
為了以后方便使用好港,我們可以通過alias進行簡化工作:
- 進入終端愉镰,鍵入命令
vim ~/.bash_profile
; - 在vim界面輸入i進入編輯編輯狀態(tài)并且鍵入:
alias rewriteoc='clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk'
鍵入完畢钧汹,點esc退出編輯狀態(tài)丈探,再鍵入:wq
退出vim并保存; - 執(zhí)行
source ~/.bash_profile
拔莱,執(zhí)行后方會生效碗降。
? 進入項目目錄隘竭,找到想要編譯的文件,執(zhí)行rewriteoc xxx.m
遗锣,生成對應(yīng)的.cpp文件就是我們想要的文件:
見證奇跡的時刻~
tip:編譯出的.cpp文件代碼很多货裹,可以從底部向上翻閱。