【问题标题】:What do you mean by opaque type of a class? [duplicate]类的不透明类型是什么意思? [复制]
【发布时间】:2013-10-27 23:48:55
【问题描述】:

“类”被称为类的不透明类型。这是什么意思?是类的类型吗?

还有一点,类是指向结构体的指针还是基本上是结构体?

【问题讨论】:

  • “不透明”的意思是“你不应该关心这实际上是什么”。它可能是(可能是)以某种方式描述类的结构,但您不应该直接访问该结构,而不是使用 Objective C 运行时函数。

标签: objective-c class


【解决方案1】:

Class 类型的变量可以保存指向类对象的指针,就像id 类型的变量可以保存指向任何对象的指针一样。类对象是一个对象。如果你有一个id 类型的变量,你不知道里面是什么东西;与Class 相同。你只知道它是一个对象。我不知道你从哪里得到这个“不透明类型”的术语。

你可以说对象是结构,因为它们是由一堆东西组成的,它们以某种方式在内存中排列在一起。但是你永远不应该关心对象的内部结构。这是运行时的实现细节。您在 Apple 运行时标头中看到的结构,如 objc_objectobjc_class 等,并不完全是对象——它们代表 Apple 运行时中对象“开始”的结构;但对象包含的内容超出了这些结构所描述的内容,例如其实例变量。

【讨论】:

  • @newact: 类是结构体还是结构体指针?
  • @user007:object(类的实例)是一个结构。在 Objective-C 中,我们从不直接持有对象。我们总是使用指向对象的指针来操作对象。所以指向对象的指针就是指向结构的指针。 类对象(同样,这是一个更高级的概念)是一个对象,结构也是如此。同样,我们只能处理指向类对象的指针,而不是类对象本身。
猜你喜欢
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多