Class是一个对象,还是一个结构?

don*_*ile 4 objective-c

Class一个对象,还是一个结构?

Lau*_*ble 6

Objective-C类被视为对象,但有一些限制(参见Objective-C编程语言):

因此,类对象是完整的对象,可以动态地键入,接收消息,并从其他类继承方法.它们之所以特别只是因为它们是由编译器创建的,缺少它们自己的数据结构(实例变量)而不是从类定义构建的数据结构(实例变量),并且是在运行时生成实例的代理.

在场景后面,类定义包含各种信息,其中大部分都是关于类的实例:

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


小智 5

正式地说,它是作为结构实现的,但Objective-C运行时让你将一个Class视为一个对象.Cocoa with Love有一篇关于类和元类如何在Objective-C中工作的精彩文章.