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指针
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...