什么是isa实例变量?

时间:2009-04-25 15:15:43

标签: iphone objective-c memory-management

在NSObject类参考中,他们讨论了“isa实例变量”

  

初始化为描述类

的数据结构

有人可以解释我应该知道的关于这是一个实例变量吗?这有什么用?什么意思?听起来像DIN,ISO等标准;知道那是什么吗?

2 个答案:

答案 0 :(得分:7)

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

  

创建新对象时,会为其分配内存空间,并初始化其实例变量形式的数据。每个对象至少有一个名为isa的实例变量(继承自NSObject),它被初始化为引用对象的类。通过此引用,还可以访问对象的继承路径中的类。 - Objective-C GNUstep Base Programming Manual: Objective-C

名称isa来自IS-A的OOP概念,它只是这两个对象之间的关系:

  

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

因此,isa实例变量可能会有所帮助,因为它可以告诉您类在其继承层次结构中有哪些IS-A关系。

答案 1 :(得分:6)

它基本上是指向对象类的指针,是Objective-C运行时所基于的。运行时使用它来获取对象方法分派表以及存储在类结构中的任何其他内容。它几乎是每个Objective-C对象必须拥有的唯一东西。

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