首页推荐首页投稿收藏ios

OC对象是结构体的验证

2018-05-22  本文已影响247人  小沛2016

众所周知,在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 结构体的关键词

上一篇 下一篇

猜你喜欢

热点阅读