2009-04-25 49 views
3

在NSObject类参考他们谈论的“ISA实例变量”,它什么是isa实例变量?

初始化为描述类的数据结构

有人可以解释我应该知道这个ISA实例什么变量?这有什么好处? isa是什么意思?听起来像DIN,ISO等规范。任何想法是什么?

回答

7

它用于确定类的继承路径。更正式地说:

当一个新的对象被创建时,它被分配了内存空间并且它的实例变量的数据被初始化。每个对象至少有一个名为isa的实例变量(从NSObject继承),它被初始化为引用对象的类。通过这个引用,对对象的继承路径中的类也提供访问权限。 - Objective-C GNUstep Base Programming Manual: Objective-C

名称isa来源于IS-A面向对象的概念,它仅仅是这样的两个对象之间的关系:

狗是-A哺乳动物。
一辆IS-A汽车。

所以isa实例变量可以是有益的,因为它可以告诉你什么IS-A关系类在其继承层次。

6

它基本上是指向对象类的指针,它是Objective-C运行时的基础。运行时使用它来获取对象方法调度表以及存储在类结构中的其他内容。这几乎是每个Objective-C对象必须具备的唯一东西。

大多数情况下,您可以完全忽略它。