美文网首页
Runtime - 数据结构

Runtime - 数据结构

作者: 小行为 | 来源:发表于2018-11-17 10:46 被阅读15次

    OC中所有id都是一个** objc_object **对象
    objc_object包含:

    isa_t
    关于isa操作相关
    弱引用相关
    关联对象相关
    内存管理相关


    屏幕快照 2018-11-17 上午10.20.47.png

    objc_class包含:

    Class ->
    objc_class (继承自 objc_object ) 结构体
    superClass (父类)
    cache_t (方法缓存)
    class_data_bits_t (变量 属性 方法)

    屏幕快照 2018-11-17 上午10.20.38.png

    isa 指针:

    共用体 isa_t :
    {
    指针型isa (isa的值代表 class地址 )
    非指针型isa (isa的值得部分代表class的地址)
    }

    isa 指向:

    关于对象 其指向类对象
    实例 -isa -> class
    关于类对象 其指向元类对象
    class -isa- > metaClass(元类对象)

    屏幕快照 2018-11-17 上午10.25.17.png

    cache_t 指向:

    用于快速查找方法执行函数
    它是一个可增量扩展的哈希表结构 (提高查找效率)
    是局部性原理的最佳应用(局部性原理: 把调用频次最高的放在缓存中 就是局部性原理实现)
    cache_t 是由 多个 bucket_t (结构体)
    bucket_t 包含 { key: IMP }

    屏幕快照 2018-11-17 上午10.28.36.png

    class_data_bits_t 指向:

    class_data_bits_t 主要是对class_rw_t的封装
    class_rw_t代表了类相关的读写信息 对class_ro_t的封装
    class_ro_t 代表类的相关只读信息

    class_rw_t包含 :

    class_ro_t
    protocols
    properties
    methods

    屏幕快照 2018-11-17 上午10.32.25.png

    class_ro_t包含 :

    name
    ivars(类的成员变量)
    properties(属性)
    peotocols(协议)
    methodList(方法列表)

    屏幕快照 2018-11-17 上午10.34.38.png

    method_t包含 :
    函数四要素:

    名称
    返回值
    参数
    函数体

    method_t:

    SEL name;
    const chat* types(函数返回值和参数组合)
    IMP imp(无类型函数指针 对应是函数体)

    Type Encodings :
    const xhar* types;

    屏幕快照 2018-11-17 上午10.42.39.png

    整体数据结构 :

    屏幕快照 2018-11-17 上午10.45.18.png

    相关文章

      网友评论

          本文标题:Runtime - 数据结构

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