clang -rewrite-objc的作用是把obicetive-c代码转写成c/c++代码,一般用于查看obicetive-c源码的秘密,尤其是关于Block的知识。
1. 看一段最简单的代码。
![](https://img.haomeiwen.com/i4693928/c46eca3501199210.png)
然后打开终端,对main.m执行命令:
![](https://img.haomeiwen.com/i4693928/555b14e20093b199.png)
命令执行以后,目录下多出一个main.cpp文件,打开一看,四万多行代码。其关键代码如下:
![](https://img.haomeiwen.com/i4693928/354b3403e63639b0.png)
一般大家用这个例子探究block的原理。
2. 指定SDK
oc代码要转成c代码时,真机和模拟器上差别还是挺大的。如果需要指定SDK,那么要结合xcrun命令,
真机:
![](https://img.haomeiwen.com/i4693928/c06455c99cb02280.png)
模拟器:
![](https://img.haomeiwen.com/i4693928/0622ab23d62ed63b.png)
模拟器和真机都有默认的SDK版本,某个版本号的SDK
![](https://img.haomeiwen.com/i4693928/9687e129600cc261.png)
3. 指定framework
xcrun -sdk iphonesimulator10.2.1 clang -rewrite-objc –F /Users/einstein-administrator/Desktop/einstein/einstein main.m
以上都是简单示例,实际工作中可以同时指定多个源文件、多个framework。
网友评论