美文网首页
一.OC对象的本质

一.OC对象的本质

作者: 郝程序猿 | 来源:发表于2021-08-31 18:06 被阅读0次

常用LLDB指令:
print p:打印

读取内存:
memory read/数量格式字节数 内存地址
x/数量格式字节数 内存地址
格式:x是16进制 f是浮点数 d是10进制

字节大小
b:byte 1字节 h:half word 2字节
w:word 4字节 g:giant word 8字节

修改内存中的值
memory write 内存地址 数值

思考:一个student对象占用多少内存空间


image.png

占用16字节

image.png

使用malloc_size()的时候是32字节 (实际分配的大小)是因为系统内部会按照16字节 再次进行对齐 (按照16 32 48 64 80 96 112。。。)
使用class_getInstanceSize()和sizeof()的时候是24字节( 成员变量对齐后所占用的大小)
sizeof()是运算符 不是函数 是在运行前就已经知道的 如果传入一个对象 则计算的是这个对象的指针大小为8 如果传入一个int 则计算就是int值为4

对象分为3类:
instance对象 :就是通过alloc出来的对象 每次调用alloc都会产生新的instance对象
实例变量内存中存储着isa 和其它成员变量

类对象 :一个类的类对象,在内存中有且只有一份


image.png

通过这个就可以验证

class对象在内存中存储的信息包括:

  1. isa指针
    2.supperclass指针
    3.类的属性信息 类的对象方法信息
    4.类的协议信息 类的成员变量信息(成员变量的描述信息 比如说是什么类型)

元类对象:(meta-class)

每个元类对象,内存中值存在一份
meta_class与class对象的内存结构是一样的,但是用途不一样

object_getClass()如果传入的是实例对象,返回的就是类对象 如果传入的是类对象 返回的就是元类对象
objc_getClass() 传入一个字符串类名 返回的就是类对象
-(Class)class +(Class)class 返回的就是类对象

相关文章

  • OC 与 Swift

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(中)—— OC对象的种类

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(下)—— 详解isa&supercl

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(上)

    iOS | OC对象本质 | Objective-C 什么是OC语言,OC对象、类的本质是什么,OC对象的内存布局...

  • Runtime:OC对象、类、元类的本质

    零、Runtime是什么一、OC对象的本质二、OC类的本质三、OC元类的本质四、Runtime关于对象、类、元类的...

  • iOS底层isa结构分析

    在介绍正文之前,首先需要理解一个概念:OC对象的本质是什么? OC对象本质 在探索oc对象本质前,先了解一个编译器...

  • block 笔记

    block本质是OC对象(封装了函数调用以及调用环境的OC对象) 本质

  • OC对象原理探究(下)

    介绍正文前,我们思考一个问题,什么是对象?或者说OC对象的本质是什么? 对象本质以及拓展 在探索oc对象本质前,先...

  • 总结

    主题一《OC对象的本质》=========== 1、OC的本质 Objective-C ----> C\C++ -...

  • iOS底层原理总结-- KVO/KVC的本质

    iOS底层原理总结--OC对象的本质(一) - 掘金 iOS底层原理总结--OC对象的本质(二) - 掘金 iOS...

网友评论

      本文标题:一.OC对象的本质

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