“类”被称为类的不透明类型。这是什么意思?它是类的类型吗?
还有一件事,类是指向结构的指针还是基本上是结构?
类型变量Class
可以保存指向类对象的指针,就像id
类型变量可以保存指向任何对象的指针一样。类对象是一个对象。如果你有一个 type 的变量id
,你不知道里面是什么东西;与 相同Class
。你只知道它是一个对象。我不知道你从哪里得到这个“不透明类型”的术语。
你可以说对象是结构,因为它们是由一堆东西组成的,它们以某种方式在内存中排列在一起。但是你永远不应该关心对象的内部结构。这是运行时的实现细节。您在 Apple 运行时标头中看到的结构,例如objc_object
、objc_class
等,并不完全是对象——它们代表 Apple 运行时中对象“开始”的结构;但是对象包含的内容超出了这些结构所描述的内容,例如它的实例变量。