美文网首页
object-对象本质

object-对象本质

作者: 开发界小学生 | 来源:发表于2018-06-26 16:14 被阅读0次

    NSObject底层实现

        struct NSObject_IMPL {
            Class isa;
            };
    ``
    ###class的superclass指针
    先通过isa 指针找到实例对象的类,然后在通过superclass指针找到父类
    ###meta-class对象的superclass指针
    类的类方法都储存在原类中,通过原类的superclass指针找到父类的原类调用类方法!
    ![AAE82403-67B1-43D5-BFB9-E93ED0215E2B.png](https://img.haomeiwen.com/i9717104/dfa8457fcfaab808.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    ###isa
    指针型isa
    
    非指针型isa
    arm 64架构
    64个bit
    
    0~15位
    第1位 indexed 标志位:0 代表 纯的isa 。1 代表 非纯isa指针
    第2位:has_assoc 表示是否有关联对象
    第3位:has_cxx_dtor 表示是当前类是否使用C++语言方面内容
    剩下的表示当前对象的指针地址
    16~35位
    剩下的表示当前对象的指针地址
    ![image.png](https://img.haomeiwen.com/i9717104/c41949ff2c95649d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ###散列表结构
    当object 的引用计数较大时就会 SideTables()存储引用计数
    SideTabel结构
    1.spinlock_t 自旋锁
    2,RefcountMap 引用计数表
    3.weak_table_t 弱引用表
    
    使用分离锁增加查找效率
    
    ###内存管理方案
    TaggedPointer
    NONPOINTER_ISA
    散列表
        ·弱引用表
        ·引用计数表

    相关文章

      网友评论

          本文标题:object-对象本质

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