美文网首页
NSObject底层实现

NSObject底层实现

作者: 萝卜酱紫 | 来源:发表于2019-01-09 14:58 被阅读8次
    struct NSObject_IMPL {
            Class isa;
            };
    
    ###class的superclass指针
    先通过isa 指针找到实例对象的类,然后在通过superclass指针找到父类
    
    
    ###meta-class对象的superclass指针
    类的类方法都储存在原类中,通过原类的superclass指针找到父类的原类调用类方法!
    
    AAE82403-67B1-43D5-BFB9-E93ED0215E2B.png
    ###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
    ###散列表结构
    当object 的引用计数较大时就会 SideTables()存储引用计数
    SideTabel结构
    1.spinlock_t 自旋锁
    2,RefcountMap 引用计数表
    3.weak_table_t 弱引用表
    
    使用分离锁增加查找效率
    
    ###内存管理方案
    TaggedPointer
    NONPOINTER_ISA
    散列表
        ·弱引用表
        ·引用计数表
    

    相关文章

      网友评论

          本文标题:NSObject底层实现

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