什么是isa实例变量?

Tha*_*nks 3 iphone memory-management objective-c

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

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

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

And*_*are 7

它用于确定类的继承路径.更正式的:

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

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

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

因此,isa实例变量可以有用,因为它可以告诉IS-A您类在其继承层次结构中具有哪些关系.


Jas*_*oco 6

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

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