clang -rewrite-objc的作用是把obicetive-c代碼轉(zhuǎn)寫成c/c++代碼,一般用于查看obicetive-c源碼的秘密,尤其是關(guān)于Block的知識。
1. 看一段最簡單的代碼。

然后打開終端,對main.m執(zhí)行命令:

命令執(zhí)行以后,目錄下多出一個main.cpp文件,打開一看,四萬多行代碼。其關(guān)鍵代碼如下:

一般大家用這個例子探究block的原理。
2. 指定SDK
oc代碼要轉(zhuǎn)成c代碼時,真機和模擬器上差別還是挺大的。如果需要指定SDK,那么要結(jié)合xcrun命令,
真機:

模擬器:

模擬器和真機都有默認(rèn)的SDK版本,某個版本號的SDK

3. 指定framework
xcrun -sdk iphonesimulator10.2.1 clang -rewrite-objc –F? ? ? /Users/einstein-administrator/Desktop/einstein/einstein? main.m
以上都是簡單示例,實際工作中可以同時指定多個源文件、多個framework。