众所周知,在oc里是兼容c和c++的,那么oc对象是如何实现的呢,实际上也是用c和c++代码封装好的
平常代码的实现流程如下:
oc -> c或c++ -> 汇编语言 -> 机器语言
验证过程
1.在main函数里创建一个NSObject类
image.png
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个警告)
image.png
然后我们在项目文件里可以看到新编译出来的文件
image.png
3.用xcode打开 然后我们就可以找到main函数里将obj转成c和oc的代码片段了
image.png当然了 我们还可以给代码瘦身一下 只生成在iPhone上的代码
命令如下:
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp
xcrun xcoderun
-sdk 指定运行的平台
-arch 架构
image.png4.然后我们打开64.cpp文件,搜索 nsobject_impl
image.png
IMPL Implementation 就是实现的意思
struct 结构体的关键词
网友评论