clang -rewrite-objc 编译小Tips

clang -rewrite-objc 的作用是把 Objective-C 代码转换成 C/C++ 代码,来窥探一些幕后的秘密。

最简单的用法

举个例子,先创建一个最简单的项目

然后,找到对应的位置,输入

最后,就会出现对应的 cpp 文件了

报错

有时候,它会报下面的错误

这时候,有两种解决办法

第一种

改为使用

$ clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk XXXX.m

命令

第二种

改为使用如下的方案。

  • 如果是模拟器 :$ xcrun -sdk iphonesimulator clang -rewrite-objc main.m
  • 真机 : $ xcrun -sdk iphoneos clang -rewrite-objc main.m
  • 真机+模拟器 有默认版本的 :$ xcrun -sdk iphonesimulator9.3 clang -rewrite-objc main.m