美文网首页
类对象底层分析和类的结构

类对象底层分析和类的结构

作者: ios小喽喽 | 来源:发表于2022-08-08 13:35 被阅读0次

clang:是⼀个由Apple主导编写,基于LLVM的C/C++/Objective-C编译器

把文件编译成cpp文件,语法:clang -rewrite-objc main.m -o main.cpp

图(1)

就会在当前文件夹下生成.cpp文件

图(2)

对象在底层会编译成(struct)结构体,里面包含了一个isa ,任何类都有一个属性isa:

图(3)

属性就会走到底层的set,get方法:所有的set方法都会走到底层 objc_setProperty方法

图(4)

每一个方法都有sel - imp :imp与SEL 的关系->  SEL : ⽅法编号   IMP : 函数指针地址

类的结构:

图(5)

当类第⼀次从磁盘加载到内存时的结构

图(6)

当类第⼀次被使⽤时的结构:

图(7)

将需要动态更新的部分提取出来,存⼊class_rw_ext_t:

图(8)

类整体结构

图(9)

类方法和实例方法对比:

-(void) 表示实例方法,需要通过实例化对象调用方法

+(void) 表示类方法,不需要实例化就调用方法

类方法是可以调用类方法的,类方法可以调用类方法

类方法可以通过创建实例对象进行调用实例方法

实例方法里面的self是指首地址而类方法的self是指class

图(10)

获取元类的方法:

添加头文件:#import <objc/runtime.h>

class_getInstanceMethod:获取实例方法

图(11)

class_getClassMethod:获取 类方法

图(12)

返回方法的具体实现:

图(13)

获取所有方法:

图(14)

相关文章

  • 类对象底层分析和类的结构

    clang:是⼀个由Apple主导编写,基于LLVM的C/C++/Objective-C编译器 把文件编译成cpp...

  • OC 类探索(一)

    一、isa->类和元类 上篇文章分析了对象的isa底层实现以及是如何与cls关联的,这边文章继续分析类的结构。 对...

  • iOS底层之类的结构分析

    从iOS底层之isa结构分析及关联类我们探究了类的实例对象的内存结构,对象指针的首地址存储了isa,也就是存储了类...

  • iOS 类的结构分析(上)

    类的初探 在我们平常的 iOS 开发中,类和对象是出现很高频的名词,在之前的isa 底层结构分析 中介绍了对象,那...

  • iOS-OC底层04:类结构分析

    类结构分析 通过lldb来分析类结构 查看objc2的内存情况 类对象只有一份,isa对象-> 类(LGPerso...

  • iOS底层原理--类的结构分析(二)

    在前面一篇文章iOS底层原理--类的结构分析中,我们已经对类的底层原理进行了分析。得出了以下结论: 对象的isa指...

  • Objective-C的底层实现(类与对象)

    概述 对象 Objective-C中,类和对象的底层数据结构,可以参考Objective-C底层数据结构。其中对象...

  • 类方法归属分析&内省分析

    在类的结构分析中对类底层结构进行了分析,我们知道类的属性和实例方法都存储在class_data_bits_t类型结...

  • iOS底层之cache_t探究

    我们在iOS底层之类的结构分析分析了类的内部结构,而类的C/C++底层实际是objc_class结构体,其中包含了...

  • 类的结构分析

    类分析初探 基于isa结构分析 ,我们可以通过lldb获取对象的内存情况 创建一个Person类对象 查看类对象的...

网友评论

      本文标题:类对象底层分析和类的结构

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