阅读 47

OC对象是结构体的验证

众所周知,在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.png

4.然后我们打开64.cpp文件,搜索 nsobject_impl

image.png

IMPL Implementation 就是实现的意思

struct 结构体的关键词

文章分类
iOS