Class
是一个对象,还是一个结构?
答案 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
不是类的名称)。类对象的类是该类的元类(这里不会涉及)。类对象是第一类对象;并且你可以像常规对象一样对它们做同样的事情。在类对象上调用方法会在该类(或某个祖先类)上调用类方法;您还可以在类对象上调用类的根类的实例方法。