美文网首页
iOS打印isa指针

iOS打印isa指针

作者: RingKun | 来源:发表于2020-07-03 15:54 被阅读0次
void printIsa(id obj){
    struct IsaObjc {
        long isa;
    };
    long p = ((__bridge struct IsaObjc *)obj) -> isa;
    int endFlag = 45;
#if __x86_64__
    endFlag = 56;
#endif
    NSLog(@"\n\
          isa: 0x%lx  \n\           // isa
          nonpointer: %ld \n\   // 64位都是1
          has_assoc: %ld \n\  // 
          has_cxx_dtor: %ld \n\
          shiftcls: 0x%lx \n\    // 真实的类对象地址
          magic: 0x%lx \n\     // 魔数
          weakly_referenced: %ld \n\   // 是否存在弱引用
          deallocating: %ld \n\          // 是否正在释放
          has_sidetable_rc: %ld \n\   // 是否有在SideTables存储强引用count
          extra_rc: %lu ",              // isa存储引用count,满了后移动一部分到SideTables,自身保留2^18(mac 2^7), 保证性能。
          p,
          p & 0x1,
          (p & 0x2) >> 1,
          (p & 0x4) >> 2,
          (p & 0x00007ffffffffff8),
          (p & 0x001f800000000001) >> (endFlag - 6),
          (p & 0x0020000000000000) >> (endFlag - 3),
          (p & 0x0040000000000000) >> (endFlag - 2),
          (p & 0x0080000000000000) >> (endFlag - 1),
          (p & 0xff00000000000000) >> endFlag);
}

相关文章

  • iOS打印isa指针

  • iOS-底层原理(3.5)-isa-Class的结构详解

    isa指针图解 代码例子佐证 - 实例对象isa验证 打印结果 从打印结果我们可以知道实例对象的isa指针 & ...

  • 13 runtime-isa-Class的结构详解

    isa指针图解 代码例子佐证 - 实例对象isa验证 打印结果 从打印结果我们可以知道实例对象的isa指针 & I...

  • IOS- 底层原理-类结构分析

    如何打印类信息 通过lldb指令打印类信息 通过isa指针地址 & ISA_MASK*NSObject提供的cla...

  • 4-1 内存管理

    1.内存布局 2.iOS内存管理方案 [isa指针保存了内存管理的信息] 2.iOS内存管理方案 [isa指针...

  • iOS isa指针

    isa 指针,表示这个对象是一个什么类。而 Class 类型, 也就是 struct objc_class * ,...

  • iOS isa指针

    在Objective-C中,任何类的定义都是对象。类和类的实例没有任何本质上的区别。任何对象都有isa指针。 is...

  • iOS - isa指针

    [toc] 参考 isa指针 isa 简介 isa (is a kind of) 是一个 Class 类型的指针,...

  • iOS ISA指针

    https://opensource.apple.com/tarballs/objc4/[https://open...

  • iOS:isa指针

    一、联合体 1. 概念 联合体,是一种特殊的数据类型,其目的是节省内存。联合体内部可以定义多种数据类型,但是同一时...

网友评论

      本文标题:iOS打印isa指针

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