Objective c 类是对象还是结构?

Objective c 类是对象还是结构?,objective-c,Objective C,Class是对象还是结构?Class类型是引用类型,struct类型是值类型。类或结构类型的实例称为对象。正式地说,它是作为结构实现的,但Objective-C运行时允许您将类视为对象。Cocoa with Love有一篇很棒的文章。Objective-C类被视为对象,但有一些限制(请参阅): 因此类对象是成熟的 可以动态类型化的对象, 接收消息,并继承方法 来自其他班级。它们很特别 只是因为它们是由 编译器,缺少数据结构 (实例变量)自己的 除了从类中构建的那些 定义,并且是 在运行时生成实例

Class
是对象还是结构?

Class
类型是引用类型,
struct
类型是值类型。类或结构类型的实例称为对象。

正式地说,它是作为结构实现的,但Objective-C运行时允许您将类视为对象。Cocoa with Love有一篇很棒的文章。Objective-C类被视为对象,但有一些限制(请参阅):

因此类对象是成熟的 可以动态类型化的对象, 接收消息,并继承方法 来自其他班级。它们很特别 只是因为它们是由 编译器,缺少数据结构 (实例变量)自己的 除了从类中构建的那些 定义,并且是 在运行时生成实例

在幕后,类定义包含各种信息,其中大部分与类的实例有关:

  • 类及其超类的名称
  • 描述一组实例变量的模板
  • 方法名及其返回和参数类型的声明
  • 方法实现

Class
是一种可以保存指向类对象的指针的类型(类似于
id
是一种可以保存指向任何对象的指针的类型)
Class
不是类的名称(类似于
id
不是类的名称)。类对象的类是该类的元类(这里不讨论这个)。类对象是一级对象;你可以用它们做和普通物体一样的事情。调用类对象上的方法调用该类(或某个祖先类)上的类方法;还可以在类对象上调用类的根类的实例方法