isa指针在对象中实现的确切位置是什么?

时间:2013-10-11 09:40:29

标签: objective-c pointers

我读到isa指针在消息中查找实例方法,以检查类及其超类中是否确实存在该方法。所以我的问题是,它在对象中实现了什么?

2 个答案:

答案 0 :(得分:1)

请注意,您不应直接访问isa指针以获取对象类,而是使用objc_getClass()。例如,在ARM64中,isa字段除了类指针之外还包含其他标志(最值得注意的是对象的引用计数,如果它足够小)。有关详细信息,请参阅this post by Mike Ash

答案 1 :(得分:0)

如果您在运行时查看某个课程,您会遇到这个......

typedef struct objc_class *Class;
typedef struct objc_object {
    Class isa;
} *id; 

编辑:

同样在NSObject.h

/***********    Base class      ***********/

NS_ROOT_CLASS
@interface NSObject <NSObject> {
    Class   isa;
}