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

时间:2010-06-15 08:22:14

标签: objective-c

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

4 个答案:

答案 0 :(得分:6)

Objective-C类被视为对象,但有一些限制(参见Objective-C Programming Language):

  

因此,类对象是完整的   可以动态输入的对象,   接收消息,并继承方法   来自其他课程。他们很特别   只是因为他们是由他们创造的   编译器,缺乏数据结构   (实例变量)属于自己的   除了那些从班级建造的   定义,是代理商   在运行时生成实例。

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

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

答案 1 :(得分:5)

正式地说,它是作为结构实现的,但Objective-C运行时让你将一个Class视为一个对象。 Cocoa with Love在how classes and meta-classes work in Objective-C上有一篇很棒的文章。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

Class是一种可以保存指向类对象的指针的类型(类似于id是一种可以保存指向任何对象的指针的类型)。 Class不是类的名称(类似于id不是类的名称)。类对象的类是该类的元类(这里不会涉及)。类对象是第一类对象;并且你可以像常规对象一样对它们做同样的事情。在类对象上调用方法会在该类(或某个祖先类)上调用类方法;您还可以在类对象上调用类的根类的实例方法。