OC
在 Objective-C(OC)中,类和类对象是两个密切相关的概念。它们的区别和相互关系主要体现在对象的创建、类方法调用、以及 OC 底层的运行时机制。
1. 类(Class)
定义:类是 OC 中的核心概念,用于定义对象的行为和属性。它包含了实例变量、属性和方法。
实例化:类是用来创建对象的模板,通过类可以实例化生成对象(实例),这些对象会拥有类中定义的属性和方法。
定义示例:
2. 类对象(Class Object)
定义:在 OC 中,每个类本身也是一个对象,称为“类对象”。类对象是表示某个类的元类(meta-class)的实例。
存在意义:类对象的主要作用是响应类方法调用。类的实例方法由实例对象调用,而类方法则由类对象调用。
创建时机:当程序启动或首次使用某个类时,运行时(runtime)会创建对应的类对象。
3. 类与类对象的关系
类与类对象的区别:
类是用于定义对象的蓝图,可以创建多个实例对象。
类对象是代表某个类的单一对象,它管理该类的类方法和其他元信息。
类的结构:类由以下几部分组成:
实例变量:属于类的对象(实例)所拥有的数据。
实例方法:只能通过对象调用的方法。
类方法:可以直接通过类对象调用的方法,属于整个类,而不是某个实例。
4. 类方法与实例方法的区别
实例方法:通过类的实例来调用,它们是操作具体对象的行为。
类方法:通过类对象来调用,通常用于创建对象或者执行不依赖具体实例的操作。
5. 类对象的实现
在 OC 的底层,类对象是 Class
类型的对象。通过运行时函数 object_getClass()
可以获取某个对象的类,类本身的类对象是其元类(meta-class)。每个类对象都有指向其元类的指针,元类管理类方法,元类本身也是类,但它是唯一的,不再有元类。
6. 元类(Meta-class)
元类的作用:元类是类对象的类。每个类对象都由元类实例化,元类负责处理类方法。
继承关系:普通对象的类是它的类对象,而类对象的类是元类,元类的类最终指向根元类(
NSObject
的元类)。
通过理解类与类对象,OC 的运行时系统显得更清晰,尤其是在类方法、实例方法的调用及类的继承层次上
Last updated