Skip to content

说一下对 isa 指针的理解,对象的 isa 指针指向哪里? isa 指针有哪两种类型?(注意区分不同对象) #52

@tbfungeek

Description

@tbfungeek
  • isa = is a 它主要是指向对象信息的存储位置:

具体的指向前面的题目中也有说明过了,大家看下这个图就清楚了。
000000003

  • isa 有两种类型
* 纯指针,指向内存地址
* NON_POINTER_ISA(非指针ISA),除了内存地址,还存有一些其他信息:
uintptr_t nonpointer        : 1;                                       \
uintptr_t has_assoc         : 1;                                       \
uintptr_t has_cxx_dtor      : 1;                                       \
uintptr_t shiftcls          : 33; /*MACH_VM_MAX_ADDRESS 0x1000000000*/ \
uintptr_t magic             : 6;                                       \
uintptr_t weakly_referenced : 1;                                       \
uintptr_t deallocating      : 1;                                       \
uintptr_t has_sidetable_rc  : 1;                                       \
uintptr_t extra_rc          : 19

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions