2024-03-07 19:43:18
Objective-C基础(二)主要介绍了OC对象分类、class与object_getClass方法的区别以及方法的隐式参数。以下是详细解析:
1. OC对象分类OC对象分为三类:实例对象(instance)、类对象(class)和元类对象(meta-class)。
实例对象(instance):
存储isa指针和成员变量的值。
成员变量的名称、类型等信息存储在类对象中。
举例:女娲根据“人类”这个类对象(存储身高、体重等成员变量信息)捏出具体的人(存储具体的成员变量值)。
类对象(class):
存储isa指针、superclass指针、属性信息、对象方法信息、协议信息、成员变量信息。
对象方法信息统一存储在类对象中,所有实例共享。
元类对象(meta-class):
存储类方法信息。
类方法的调用通过元类对象实现。

对instance对象调用,均返回其对应的class对象。
对class对象调用class方法,无论调用多少次,始终返回class对象本身。
对class对象调用object_getClass方法,返回其对应的meta-class对象。
实例对象 → 返回其class对象。
类对象 → 返回自身。
返回对象的isa指针指向的对象。
OC中所有方法调用均包含两个隐式参数:self和_cmd。
表示调用该方法的对象(实例方法)或类(类方法)。
表示当前被调用的方法名。
实例对象存储成员变量值,类对象存储方法信息,元类对象存储类方法信息。
isa指针和superclass指针的指向关系需重点理解。
class和object_getClass的区别在于对类对象的处理。
self和_cmd是方法调用的底层机制,理解它们有助于深入掌握OC运行时。
重点:知识点1(对象分类与isa指针关系)是理解OC运行时的基础,务必掌握!