OC对象是结构体的验证

作者: 小沛2016 | 来源:发表于2018-05-22 22:16 被阅读247次

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

相关文章

  • OC对象是结构体的验证

    众所周知,在oc里是兼容c和c++的,那么oc对象是如何实现的呢,实际上也是用c和c++代码封装好的 平常代码的实...

  • OC中实例对象、类、元类

    对象 OC是C语言的扩展,OC中的对象是由C语言中结构体实现的。2006年苹果发布Objc 2.0 对象,类,元类...

  • 【OC梳理】结构体、枚举

    结构体(struct) OC中的结构体(struct),其实就是C语言中的结构体(struct)常见使用方法。OC...

  • iOS底层原理-005 isa

    我们知道OC对象都是结构体。那怎么验证呢 生成cpp文件验证 创建一个工程,创建一个Person类 编译cpp文件...

  • 01-OC对象的本质

    OC是通过C/C++的什么数据结构实现我们的OC对象呢 结构体--OC对象的本质就是C/C++的结构体 Class...

  • 笔记(一):OC对象本质

    一 通用的一些东西 OC 的面向对象是基于C/C++的结构体实现的。 2.OC代码转C++代码 可能会遇到的错误&...

  • 结构体和类的区别

    一、定义一个结构体 二、使用 三、结构体和OC类的区别 结构体: 只能封装属性,不能封装方法; 分配在栈上 OC类...

  • 二、 字节对齐

    探索OC类的大小要先来说一下结构体,因为OC类底层都是以结构体的形式存在的。 1 结构体大小-字节对齐 我们先定义...

  • Objective-C基础

    OC OC知识点 OC的字符串 - 1.类:是结构体的升级,用于定义变量 - - 与结构体的区别 关键字 成员变量...

  • 关于为何view.frame.size.width = *报错

    OC语法规定:OC对象的结构体属性的成员变量无法直接赋值, 但是可以给OC对象的结构体属性赋值 也就是说 可以直接...

网友评论

    本文标题:OC对象是结构体的验证

    本文链接:https://www.haomeiwen.com/subject/wxokjftx.html