0

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

4

2 回答 2

1

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

于 2013-10-11T09:54:03.643 回答
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;
}
于 2013-10-11T09:49:12.033 回答