众所周知,在oc里是兼容c和c++的,那么oc对象是如何实现的呢,实际上也是用c和c++代码封装好的
平常代码的实现流程如下: oc -> c或c++ -> 汇编语言 -> 机器语言
验证过程
1.在main函数里创建一个NSObject类
2.然后打开终端
运行 clang -rewrite-objc main.m -o main.cpp 命令 clang 是xcdoe自带的插件 -rewrite-objc 是重写的意思 main.m 是文件的名字 -0 输出 main.cpp 输出文件的名字 cpp 是指 c plus plus 就是c++的意思 为什么是c++? 因为生成的可能是c和c++混编的 所以c++为妥
然后会有这样子的提示出来(64个警告)
然后我们在项目文件里可以看到新编译出来的文件
3.用xcode打开 然后我们就可以找到main函数里将obj转成c和oc的代码片段了
当然了 我们还可以给代码瘦身一下 只生成在iPhone上的代码
命令如下:
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp
xcrun xcoderun -sdk 指定运行的平台
-arch 架构
4.然后我们打开64.cpp文件,搜索 nsobject_impl
IMPL Implementation 就是实现的意思
struct 结构体的关键词